PHPでデータベースの内容を表示

トップ > 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_querymysql_fetch_array
接続を切断 mysql_close

MySQLに接続する

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);

SQLを実行する

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 が格納されますので、実行結果は同じです。

MySQLとの接続を切断する

PHPでMySQLとの接続を切断するには、mysql_close 関数を使用します。切断に成功するとTRUE、失敗すると FALSE が返されます。

結果 = mysql_close(接続ID);