リレーショナルデータベースの一つであるMySQLとPHPを組み合わせたWebデータベースアプリケーションの基礎について学びます.
MySQLは1995年にDavid Axmark, Allan Larsson, Michael Wideniusらによって公開された,フリーのリレーショナルデータベースです.高速でかつ,軽快な動作に定評があり,特にWebデータベースとしての評価が高いデータベースです.
MySQLを扱うためには,構造化問い合わせ言語,SQL (Structured Query Language)を使います.この命令の書き方はリレーショナルデータベースによって若干異なる部分もありますが,動作原理は全てリレーショナルデータベースで共通です.
図1.SQLによるデータベース処理
SQLによるデータベース処理のイメージを図1に示します.まず,プログラム側において,どのような条件でデータを処理するかをSQL文として組み立てます.次に,組み立てたSQL文をデータベースエンジンに対して発行します.SQL文を受け取ったデータベースエンジンは,その内容を解釈して,データベース本体に対し,抽出や並べ替えなどの処理を実行します.最後に,処理の結果だけをプログラムに返し,終了します.
MySQLにSQL文を送る方法として,MySQLコマンドラインクライアントを使う方法がありますが,この実験ではPHPを使ってMySQLにSQL文を送ります.
PHPからMySQLを操作する基本的なフローを以下に示します.
- mysql_connect関数により,MyhSQLに接続する.
- MySQL読み込み時の文字コードを設定する.
- mysql_select_db関数により,使用するデータベースを選択する.
- SQL文の組み立て
- mysql_query関数を用いて,MySQLに対しSQL文を発行する.
- SQLがselect文の場合,MySQLから返されたレコードをmysql_fecch_array関数等で結果セットとして受け取り,表示等の処理を行う.
- SQLがselect文の場合,mysql_free_result関数で結果セットを破棄する.
- mysql_close関数でMySQLとの接続を解除する.
実用的なWebアプリケーションとしてPHPで開発するためには,もう少し必要な手順等ありますが,基本的には上記のフローによってMySQLを操作します.
[プログラミング作成手順]
この実験ではPHPを使い,データベースの操作を行います.そのため,プログラムの作成手順は「テーマ5 サーバサイドプログラミング」と同じ手順で行います.詳しくはテーマ7の実験方法を参考にしてください.なお,この実験では,z:\www\exp2-6というフォルダ下での作業を前提として進めます.
以下にサーバ上にあらかじめ作成したデータベース「jikken2」に対して,PHPを使って実際に操作してみましょう.
4.0 データベース「jikken2」について
ユーザー名:jikken2
パスワード :jikken2
テーブル:tbladdress
表(1) tbladdress の構成
データ項目名 | データの種類 | 最大値/最小値 | フィールド名 | データ型 | 備考 |
ID | 数値 | 1000 | id | int | primary key not null auto_increment |
名前 | 文字 | 30 | name | varchar(30) | |
学籍番号 | 文字 | 50 | prefid | varchar(50) | |
メールアドレス | 文字 | 50 | address | varchar(50) | |
電話番号 | 文字 | 20 | tell | varchar(20) |
サンプルプログラム exp2-61.php を作成してください.
適切なURLを入力して,このような結果が出力されたら,成功です.課題の進み具合によっては異なる画面が表示されますが,そのまま進めてください.
ここでソースを少し見てみましょう.
$DBSERVER = "*******"; //MySQLサーバー名
$DBUSER = "*****"; //ログインユーザー名
$DBPASSWORD = *****""; //パスワード
$DBNAME = "********"; //データベース名ここでは,MySQLのサーバ名,ログインユーザー名,パスワード,データベース名を指定します.
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
これにより,MySQLに接続します.さらに,
mysql_query("set names sjis");によって,文字コードを設定し,
$selectdb = mysql_select_db($DBNAME);
これにより,使用するデータベースを選択します.次に,SQL文を組み立てます.
$sql = "SELECT * from tbladdress";
最後に,SQLを発行して結果セットを取得します.
$rst = mysql_query($sql);
サンプルプログラム exp2-63.php を参考にして,データベースに自分の名前,学籍番号,メールアドレス,電話番号(でたらめでOK)を追加してください.
無事に追加されたら,このようなメッセージが表示されます.
また,確認のために,先ほど作成したexp2-61.php をブラウザから開き,自分のレコードが追加されているか確認してください.
レコードの更新はupdate文によって行います.サンプルプログラム exp2-64.php を参考にして,自分のレコードの電話番号(適当)の項目を変更してください.ここで作成したスクリプトでは,キーとしてprefid(学籍番号)を用いています.間違えないように,自分の学籍番号をキーとして指定してください.
このように,電話番号が変更されていれば,成功です.
以下は実験終了後に各自調べ,レポートで報告すること
- RDBMS( Relational DataBase Management System)について,調べてください.
- 実験で用いたデータベースから,delete文を用いて,自分の学籍番号をキーとして,レコードを削除するためのSQL文を作成してください.(ただし実行しないこと)
以上で実験は終了です.担当のチェックを受けた後に,退席可です.作成したプログラムは今期の成績評価が終了するまでは消さないで残しておいてください.
レポートには必要事項を明記した表紙を必ずつけてください.