フリーPHPスクリプト配布サイト。
トップ > PHP入門 > PHPでデータベースの内容を表示
PHPにはMySQLを操作するための命令があらかじめ用意されているため、それらを使用すれば手軽にMySQLとの連携を行う事ができます。
以下はPHPでMySQLを使用したサンプルプログラムです。アドレス帳のデータを保存したテーブルの内容を、順に表示しています。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>アドレス帳</title>
</head>
<body>
<?php
$con = mysql_connect('127.0.0.1', 'root', '1234');
if (!$con) {
exit('データベースに接続できませんでした。');
}
$result = mysql_select_db('phpdb', $con);
if (!$result) {
exit('データベースを選択できませんでした。');
}
$result = mysql_query('SET NAMES utf8', $con);
if (!$result) {
exit('文字コードを指定できませんでした。');
}
$result = mysql_query('SELECT * FROM address', $con);
while ($data = mysql_fetch_array($result)) {
echo '<p>' . $data['no'] . ':' . $data['name'] . ':' . $data['tel'] . "</p>\n";
}
$con = mysql_close($con);
if (!$con) {
exit('データベースとの接続を閉じられませんでした。');
}
?>
</body>
</html>
次から、それぞれの処理を詳しく見ていきます。
MySQLをPHPから操作する場合、以下のような関数を使用します。これらを利用することで簡単にデータベースへ接続することができます。
処理内容 | 使用する関数 |
---|---|
MySQLに接続 | mysql_connect |
データベース選択 | mysql_select_db |
SQL実行 | mysql_query ~ mysql_fetch_array |
接続を切断 | mysql_close |
PHPでMySQLに接続するには、mysql_connect
関数を使用します。接続に成功すると接続IDが返されます。
接続ID = mysql_connect('接続先アドレス', 'ユーザー名', 'パスワード');
接続先は、PHPとMySQLが同じパソコンにインストールされている場合は 127.0.0.1
と設定します。ユーザー名とパスワードは、MySQLの設定に合わせます。
mysql_connect
を実行後、実際に接続ができたかどうかチェックします。チェックは「接続IDが返されたかどうか?」で判断しています。
if (!$con) { ~ }
は「接続IDが無ければ」という条件です。もし if ($con) { ~ }
と書けば「接続IDがあれば」となります。
PHPでデータベースを選択するには、mysql_select_db
関数を使用します。選択したいデータベース名と mysql_connect
関数で取得した接続IDを指定します。選択に成功すると TRUE
、失敗すると FALSE
が返されます。
結果 = mysql_select_db('データベース名', 接続ID);
PHPで実際にMySQLにコマンドを送るには mysql_query
関数を使用します。
レコードを取得するコマンドを指定した場合、結果として結果IDが返されます。それ以外のコマンドを指定した場合、成功すると TRUE
、失敗すると FALSE
が返されます。
結果ID = mysql_query('実行するSQL文', 接続ID);
最初に文字コードを指定するSQLを実行しています。SET NAMES
に続けて文字コードを指定すると、データベースで扱う文字コードを明示できます。(SET NAMES
を使わなくても文字化けしない場合、この処理は不要です。)
レコードを取得するコマンドを指定した場合、mysql_fetch_array
関数を使用すれば、レコードを一件ずつ連想配列の形式で取得する事ができます。
連想配列 = mysql_fetch_array(結果ID);
取得したレコードすべてを順に表示する場合、while
と組み合わせて以下のように書きます。
while ($data = mysql_fetch_array($result)) {
echo $data['name'];
}
これで「データを1件取り出すことができれば」という条件で繰り返し処理を行うため、データが存在する間はずっと echo
が実行されます。
また、mysql_fetch_array
の代わりに mysql_fetch_row
を使用すれば、レコードを一件ずつ配列の形式で取得する事ができます。具体的には以下のように使用します。
while ($data = mysql_fetch_row($result)) {
echo '<p>' . $data[0] . ':' . $data[1] . "</p>\n";
}
$data[0]
には先頭の列である no
が、$data[1]
には次の列である name
が格納されますので、実行結果は同じです。
PHPでMySQLとの接続を切断するには、mysql_close
関数を使用します。切断に成功するとTRUE
、失敗すると FALSE
が返されます。
結果 = mysql_close(接続ID);