blob: c12b2b6d0d9d25e16a72f1e1fccd6fb0a1133eb8 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= PHPを使用するデータベース駆動型アプリケーションの作成
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: PHPを使用するデータベース駆動型アプリケーションの作成 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, PHPを使用するデータベース駆動型アプリケーションの作成
このレッスンでは、ウィッシュ・リスト・アプリケーションの開発での最後の準備手順である、テスト・データを持つサンプルのデータベースの作成を示します。このチュートリアルの手順を完了するには、ウィッシャのデータを格納するデータベースが必要です。NetBeans IDEでは、IDEのインタフェースを使用して、これらのアクティビティをすべて実行できます。
始める前に、link:wish-list-tutorial-main-page.html[+PHPを使用するCRUDアプリケーションの作成 - メイン・ページ+]にあるチュートリアルの要件を確認してください。
現在のドキュメントは、PHP向けのNetBeans IDEでのCRUDアプリケーションの作成というPHPチュートリアルの一部です。
[[register-mysql]]
== MySQLサーバーの登録
MySQLデータベース・サーバーをIDEに登録していない場合、またはMySQLNetBeans IDEを組み合せて使用する場合の一般的な情報が必要な場合、link:../ide/mysql.html[+MySQLデータベースへの接続+]を参照してください。
== データベースのユーザーの作成
データベースを作成する前に、データベースですべての操作を実行する権限が与えられているユーザーを作成する必要があります。データベースのユーザーを作成するには、次を行う必要があります。
* <<connectToMySQLServer,MySQLサーバーにルート・ユーザーとして接続する>>。
* <<connectToDefaultDatabase,MySQLシステム・データベースにルート・ユーザーとして接続する>>。データベースに接続しないとSQLコマンドを実行できないため、これは、ユーザーを作成するSQLコマンドを実行できるようにするために必要なステップです。
* <<createUserQuery,ユーザー作成のMySQL文を実行する>>。
1. IDEを起動し、「サービス」ウィンドウに切り替えて([Ctrl]-[5])、「データベース」ノードを展開します。
2. MySQLデータベース・サーバーに
接続するには、「 ``MySQLサーバー`` 」ノードに移動して、コンテキスト・メニューから「接続」を選択します。
image::images/mysql-ctxmenu-connect.png[]
[start=3.]
. NetBeans IDEMySQLサーバーに接続し、サーバー経由で使用できるデータベースを確認して、システムの ``mysql`` データベースを検出し、対応する新しい ``mysql`` ノードをデータベース・ツリーに追加します。
image::images/mysql_node_added.png[]
[start=4.]
. SQLコマンドを実行するには、データベースに接続する必要があります。MySQLシステムのみ使用可能なので、それに接続する必要があります。
システム・データベースに接続するには、「 ``mysql`` 」ノードに移動し、コンテキスト・メニューから「接続」を選択します。接続がまだ存在していない場合は、「データベースの新規接続」ダイアログ・ボックスが表示されます。「ユーザー名」フィールドは、デフォルトで「root」と入力されています。「パスワード」フィールドに、ルート・ユーザーのパスワードを入力します。
NOTE: 以前に`mysql`データベースに接続したことがある場合、このダイアログは表示されません。かわりに、新しい接続ノードがツリーに表示されるだけです。
image::images/create-new-database-connection.png[]
「データベースの新規接続」ダイアログ・ボックスに、「接続が確立されました。」というメッセージが表示されます。「OK」をクリックします。 ``jdbc:mysql://localhost:3306/mysql`` という名前の新しいノードがデータベース・ツリーに追加されます。
[start=5.]
. ``jdbc:mysql://localhost:3306/mysql`` 」ノードに移動し、コンテキスト・メニューから「コマンドの実行」を選択します。
image::images/execute-command.png[]
SQLコマンド」ウィンドウが開きます。「SQLコマンド」ウィンドウで、次の文のような構文を使用します。
[source,sql]
----
CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'phpuserpw'
----
コンテキスト・メニューから「文の実行」を選択します。コマンドが正常に実行された場合、ステータス・バーに「SQL文の実行に成功しました。」というメッセージが表示されます。別のメッセージが表示された場合は、構文を確認し、メッセージ・ヒントに従います。
== ウィッシュリスト・データベースの作成
データベースを作成するには:
1. ``MySQLサーバーlocalhost:3306`` 」ノードに移動し、コンテキスト・メニューから「データベースを作成」を選択します。「MySQLデータベースの作成」ダイアログ・ボックスが表示されます。フィールドに次のように入力します。
* 「データベース名」フィールドに、「wishlist」と入力します。
* 「ユーザーにフル・アクセスを許可」チェックボックスをオンにし、ドロップダウン・リストから「 ``phpuser@localhost`` 」を選択して「OK」をクリックします。
image::images/create-user.png[]
「ユーザーにフル・アクセスを許可」機能は常に動作するわけではありません。これが動作しない場合、ルート・ユーザーとして<<EstablishConnection,データベースに接続>>し、SQL問合せ[examplecode]# ``GRANT ALL ON wishlist.* TO phpuser@localhost`` #を送信します。
データベースへの接続が、ツリーに表示されます。ただし、接続は`root`ユーザー用です。`phpuser`ユーザー用の接続が必要です。
== ウィッシュリスト・データベースへの接続の確立
前の項の最後に、`wishlist`データベースと`root`ユーザーへの接続が作成されました。ここで、`phpuser`ユーザー用に新しい接続を作成します。
1. 「サービス」ウィンドウで、「データベース」ノードを右クリックし、「新規接続」を選択します。新規接続ウィザードが開きます。
image::images/databases-ctxmenu-newconnection.png[]
[start=2.]
. 新規接続ウィザードの「ドライバを検索」パネルで、「`MySQL (Connector/J Driver)`」を選択します。「次」をクリックします。「接続をカスタマイズ」パネルが開きます。
image::images/locate-driver.png[]
[start=3.]
. 「データベース」フィールドに「`wishlist`」と入力します。
[start=4.]
. 「ユーザー名」および「パスワード」編集ボックスで、<<CreateUser,データベースの所有者(ユーザー)の作成>>の項で指定したユーザー名とパスワード(この例ではそれぞれ ``phpuser`` ``phpuserpw`` )を入力します。「パスワードを保存」を選択します。「接続をテスト」をクリックし、接続が成功したら、「OK」をクリックします。
image::images/phpuser-connection.png[]
対応する新規接続ノードがデータベース・ツリーに表示されます。ここで、`root`ユーザーの`wishlist`データベースへの接続を削除できます。「 ``jdbc:mysql://localhost:3306/wishlist [root on Default schema]`` 」接続をクリックし、「削除」を選択します。
image::images/new-database-connection-added.png[]
== ウィッシュリスト・データベースの構造の設計
必要なデータをすべて準備して格納するには、次の2つの表が必要です。
* 登録済ユーザーの名前とパスワードを格納するwishers
* ウィッシュの説明を格納するwishes
image::images/wishlist-db.png[]
wishers表には次の3つのフィールドがあります。
1. ID (id) - ウィッシャの一意のID。このフィールドは主キーとして使用されます。
2. name
3. password
wishes表には次の4つのフィールドがあります。
1. ID (id) - ウィッシュの一意のID。このフィールドは主キーとして使用されます。
2. ウィッシャのID (wisher_id) - ウィッシュが属するウィッシャのID。このフィールドは外部キーとして使用されます。
3. description
4. 期日(due_date) - ウィッシュがリクエストされる日付
表はウィッシャのIDを介して関連付けられます。wishesdue_date以外のフィールドは、すべて必須です。
== 表の作成
1. データベースに接続するには、 ``jdbc:mysql://localhost:3306/wishlist`` 接続で、マウスの右ボタンをクリックし、コンテキスト・メニューから「接続」を選択します。
NOTE: メニュー項目が無効になっている場合は、すでに接続されています。ステップ2へ進んでください。
2. 同じコンテキスト・メニューから「コマンドの実行」を選択します。空の「SQLコマンド」ウィンドウが開きます。
3. wishers表を作成するには:
[start=1.]
. 次のSQL問合せを入力します(国際化のためには文字セットを明示的にUTF-8に設定する必要があります)。
[source,sql]
----
CREATE TABLE wishers(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL UNIQUE,password CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL)
----
NOTE: フィールドに「AUTO_INCREMENT」プロパティを指定すると、MySQLから自動生成される一意の番号を取得できます。MySQLは、表の最後の数字を増分して一意の番号を生成し、自動増分フィールドに自動的に追加します。この例では、IDフィールドが自動的に増分されます。
[start=2.]
. 問合せでマウスの右ボタンをクリックし、コンテキスト・メニューから「文の実行」を選択します。
NOTE: MySQLのデフォルトのストレージ・エンジンはMyISAMで、外部キーをサポートしません。外部キーを使用する場合、ストレージ・エンジンとしてInnoDBを使用することを検討してください。
[start=4.]
. wishes表を作成するには:
[start=1.]
. 次のSQL問合せを入力します。
[source,sql]
----
CREATE TABLE wishes(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,wisher_id INT NOT NULL,description CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,due_date DATE,FOREIGN KEY (wisher_id) REFERENCES wishers(id))
----
[start=2.]
. 問合せでマウスの右ボタンをクリックし、コンテキスト・メニューから「文の実行」を選択します。
[start=5.]
. 新しい表がデータベースに追加されたことを確認するには、「サービス」ウィンドウに切り替えて、jdbc:mysql://localhost:3306/wishlistの接続ノードに移動します。
[start=6.]
. マウスの右ボタンをクリックし、「リフレッシュ」を選択します。「wishers」ノードと「wishes」ノードがツリーに表示されます。
注意: MySQL wishlistデータベースを作成するための一連のSQLコマンドは、link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip[+ここ+]からダウンロードできます。
== テスト・データの入力
アプリケーションをテストするには、データベース内にいくつかのデータが必要です。以降の例では、2つのウィッシャと4つのウィッシュを追加する方法を示します。
[start=1.]
. jdbc:mysql://localhost:3306/wishlistの接続で、マウスの右ボタンをクリックして「コマンドの実行」を選択します。空の「SQLコマンド」ウィンドウが開きます。
[start=2.]
. ウィッシャを追加するには、次の例のような構文を使用します。
[source,sql]
----
INSERT INTO wishers (name, password) VALUES ('Tom', 'tomcat');
----
問合せでマウスの右ボタンをクリックし、コンテキスト・メニューから「文の実行」を選択します。
NOTE: 文には ``id`` フィールドの値は含まれていません。フィールドの型が ``AUTO_INCREMENT`` に指定されているので、値は自動的に入力されます。
別のテスト・ウィッシャを入力します。
[source,sql]
----
INSERT INTO wishers (name, password) VALUES ('Jerry', 'jerrymouse');
----
[start=3.]
. ウィッシュを追加するには、次の例のような構文を使用します。
[source,sql]
----
INSERT INTO wishes (wisher_id, description, due_date) VALUES (1, 'Sausage', 080401);INSERT INTO wishes (wisher_id, description) VALUES (1, 'Icecream');INSERT INTO wishes (wisher_id, description, due_date) VALUES (2, 'Cheese', 080501);INSERT INTO wishes (wisher_id, description)VALUES (2, 'Candle');
----
問合せを選択し、各問合せでマウスの右ボタンをクリックして、コンテキスト・メニューから「セクションの実行」を選択します。
NOTE: 項目2で説明しているように、問合せを次々に実行することもできます。
[start=4.]
. テスト・データを表示するには、関連する表でマウスの右ボタンをクリックし、コンテキスト・メニューから「データを表示」を選択します。
image::images/view-test-data.png[]
データベースの原則とデザイン・パターンの一般的な知識については、チュートリアルlink:http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1[+http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1+]を確認してください。
MySQL ``CREATE TABLE`` 文の構文の詳細は、link:http://dev.mysql.com/doc/refman/5.0/en/create-table.html[+http://dev.mysql.com/doc/refman/5.0/en/create-table.html+]を参照してください。
表への値の挿入の詳細は、link:http://dev.mysql.com/doc/refman/5.0/en/insert.html[+http://dev.mysql.com/doc/refman/5.0/en/insert.html+]を参照してください。
注意: MySQL wishlistデータベースを作成するための一連のSQLコマンドは、link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip[+ここ+]からダウンロードできます。
== 次の手順
link:wish-list-lesson2.html[+次のレッスン>>+]
link:wish-list-tutorial-main-page.html[+チュートリアルのメイン・ページに戻る+]
link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%201:%20Create%20MySQL%20Database[+ご意見をお寄せください+]
link:../../../community/lists/top.html[+users@php.netbeans.orgメーリング・リストに登録する+]ことによって、NetBeans IDE PHP開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。
link:../../trails/php.html[+PHPの学習に戻る+]