mysql_fetch_array()
この関数は結果セットから、データを配列として1件ずつ取り出してくれます。これにPHPの制御構文であるwhileを組み合わせて使うことで、データが簡単に取り出せます。
【1】sample100 フォルダをコピーして sample101 フォルダを作成します。
【2】select.php を変更します。
*「\」はWindowsではエンマークのことです。
保存先 C:\phpdev\www\test\sample101
ファイル名 select.php
<?php
$url = "localhost";
$user = "root";
$pass = "";
$db = "SampleDB050";
// MySQLへ接続する
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
// データベースを選択する
$sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
// クエリを送信する
$sql = "SELECT * FROM T01Prefecture";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//結果セットの行数を取得する
$rows = mysql_num_rows($result);
//表示するデータを作成
if($rows){
while($row = mysql_fetch_array($result)) {
$tempHtml .= "<tr>";
$tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
$tempHtml .= "</tr>\n";
}
$msg = $rows."件のデータがあります。";
}else{
$msg = "データがありません。";
}
//結果保持用メモリを開放する
mysql_free_result($result);
// MySQLへの接続を閉じる
mysql_close($link) or die("MySQL切断に失敗しました。");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
<title>全件表示</title>
</head>
<body>
<h3>全件表示</h3>
<?= $msg ?>
<table width = "200" border = "0">
<tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
<?= $tempHtml ?>
</table>
</body>
</html>
【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。
準備ができたら作成したPHPプログラムを実行してみましょう。
【4】ブラウザのアドレスに http://localhost/test/sample101/select.php と入力し、実行します。
【5】select.php の画面で、データが表示されたら成功です。
データが無い場合
*データが無い状態を確認するには、SQLを以下のようにしてください。
$sql = "SELECT * FROM T01Prefecture WHERE PREF_CD > 100";
【解説】
(1)表示するデータを作成している部分です。
if($rows){
while($row = mysql_fetch_array($result)) {
$tempHtml .= "<tr>";
$tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
$tempHtml .= "</tr>\n";
}
$msg = $rows."件のデータがあります。";
}else{
$msg = "データがありません。";
}
$rows には結果セットの行数か FALSE(0) が代入されています。そこでif文を使い、行数がある場合はテーブルに表示するHTMLタグを作成し、無い場合(else)はメッセージのみ代入しています。
レコードがある間は1件ずつ取り出し、while内の処理を繰り返します。また「.=」は右辺の文字列を左辺に連結する代入演算子です。$tempHtmlにはレコード数分のタグが連結されていきます。
$row にはレコードごとに配列が入ります。カラム(列またはフィールド)にアクセスするには、連想添字か数値添字を使います。
$row["PREF_CD"]
$row[0]
作成されたHTMLタグ
(2)HTMLのbody部分です。
<h3>全件表示</h3>
<?= $msg ?>
<table width = "200" border = "0">
<tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
<?= $tempHtml ?>
</table>
$msgに代入されている文字列を出力し、テーブルタグ内に$tempHtmlに代入されているHTMLタグを出力しています。
width = "200" でテーブルの幅を調整します。
border = "0" でテーブルの罫線を調整します。