PHPを使ってMySQLにアクセスする

PHPにはMySQLを扱う関数が用意されています。またブラウザへの出力(HTML出力)も簡単にできます。そのため、Webアプリケーションを作る場合には、PHPが良く使われます。
MySQLを使ったアプリケーションでは、一番最初にMySQLユーザーやデータベース、テーブルを作成します。運用時にはデータの追加や修正、削除ぐらいなもので、MySQLユーザーを作成したりデータベースやテーブルを作成したりすることはありません。
このPHP編では、運用上に必要なことについて扱います。
(MySQLユーザー、データベース、テーブルなどは、コマンドラインやphpMyAdminで設定しておきます。)

PHPで作るWebプログラムの流れ

MySQLを扱う、PHPで作るWebプログラムでは、大まかに考えると次のような流れになります。
 1.MySQLと接続
 2.POSTやGETで引き渡されたデータの処理
 3.状況に応じた処理
 4.HTML出力
 5.MySQLとの切断
3と4は同時に行う場合もあります。コマンドライン編(1)phpMyAdmin編で作成した顧客情報をリスト表示するプログラムを考えてみます。

テーブルのデータをリスト表示するPHPプログラムを作ってみる

コマンドライン編(2)でデータを追加したテーブルを表示するプログラムを作ります。

1.MySQLと接続

PHPからMySQLを使う場合も、MySQLサーバとの接続が必要です。
接続に使うPHPのMySQL関数は
 mysql_connect([ホスト名],[MySQLユーザー名],[パスワード])
です。関数の戻り値が接続IDとなり、これ以降のMySQL関数で利用していきます。
接続に失敗した場合は、FALSEが返ってきます。
使用するデータベースがひとつなので、接続したらデータベースの指定もしておきます。
データベースの指定をする関数は
 mysql_select_db([データベース名],[接続ID])
です。

 $connect = mysql_connect('localhost','sqluser2','supass');
 if($connect == FALSE) {
  接続失敗
 }
 else {
  接続成功
  mysql_select_db('dbase2',$connect);
 }

2.POSTやGETで引き渡されたデータの処理

掲示板などの入力フォームのデータなどブラウザからGETやPOSTによってデータが渡されてきた場合、それを処理します。
追加・修正するデータの内容や削除するデータを引き渡す場合に使うようになります。
引き渡されるデータは、PHPのスーパーグローバル変数として格納されていますので、それを処理します。
今回は全データをリスト表示するだけなので、この処理はおこないません。

3.状況に応じた処理 と 4.HTML出力

ここで、状況に応じた出力処理を行います。
今回はテーブルにあるデータを一覧表示するわけですから、次のような処理になります。
 MySQLサーバにSQLクエリを実行して、テーブルの全データを得る。
 得たデータを出力する。
となります。
MySQLサーバに対してSQLクエリを実行する関数は、
 mysql_query([SQLクエリ].[接続ID])
です。
 $result = mysql_query("SELECT * FROM dbase2",$connect);
SQLの結果が$resultに入ります。
結果からデータを取り出す関数は、
 mysql_fetch_array([結果],[取り出す形式])
で、1行ずつデータを取り出します。

 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  printf("ID: %d Name: %s TelNo: $s", $row["koid"], $row["name"], $row["telno"]);
 }


結果の入ったデータは、使い終わったらメモリを解放しておきます。
 mysql_free_result($result);

4補足:phpとHTML

PHPのファイルは、拡張子が「.php」です。(設定によって違う拡張子も利用できるようになります。)
拡張子が違いますが、中身はHTMLファイルと同じでテキストファイルです。
ひとつのphpファイルは

こんな感じで固定部分はHTMLで、プログラムによる処理の結果はPHPでの出力となります。

5.MySQLとの切断

最後にMySQLとの接続を切って、プログラムを終了します。
切断するPHP関数は、
 mysql_close([接続ID])
です。
 mysql_close($connect);

Dekiruyo.net