1. はじめに
PHPからMySQLへ接続し,ブラウザ上にデータベースの内容を表示する.
例として,商品表を扱う.
前提条件
- MAMPが起動済み(PHPとMySQLの利用が可能である)
- データベース
test
が作成済み - テーブル
shouhin
が作成済み - サーバは
localhost
とする - MySQLのユーザ名とパスワードはともに
root
とする(mampのMySQLにおけるデフォルトのもの)
PHPでのエラーチェック
PHPでエラーが発生した際にブラウザ画面に表示する関数を記載しておく.
ただし,表示されないエラーもあるため注意すること.
<?php
ini_set('display_errors',1);
?>
参考
2. 内容
2.1. データ
テーブル shouhin
には以下のデータが登録されている.
列num
と列hinmei
はTEXT型,列kakaku
はINTEGER型である.
num | hinmei | kakaku |
---|---|---|
010 | pc | 80000 |
011 | display | 35000 |
020 | printer | 25000 |
025 | keyboard | 1000 |
030 | mouse | 3000 |
2.2. ソースコード
2.2.1. 先頭1行目のデータを表示
showtable.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>商品表</title>
<style></style>
</head>
<body>
<?php
//MySQLのデータベースサーバへ接続(サーバ名,接続ユーザ名,パスワード,データベース名 の順に指定)
$link=mysqli_connect("localhost","root","root","test");
//SQL文を指定
$query="SELECT * FROM shouhin";
//PHPからSQL文を実行(接続名 $link に対して $query のSQL文を実行)
//結果は$resultに格納される
$result=mysqli_query($link,$query);
//$result から1行取り出して,1項目ごとに配列 $row (フィールド名をキーとした連想配列)に格納
$row=mysqli_fetch_assoc($result);
//$row 配列の中身を表示
echo "番号:".$row['num']."<br>";
echo "品名:".$row['hinmei']."<br>";
echo "価格:".$row['kakaku']."<br>";
?>
</body>
</html>
2.2.2. 全データを表示
showtable.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>商品表</title>
<style>
table,th,td {
border-collapse:collapse;
border:1px solid black;
line-height:1.5;
}
</style>
</head>
<body>
<h1>商品表</h1>
<?php
$link=mysqli_connect("localhost","root","root","test");
$query="SELECT * FROM shouhin";
$result=mysqli_query($link,$query);
echo "<table>";
echo "<tr bgcolor=#87cefa>
<th>番号</th>
<th>品名</th>
<th>価格</th>
</tr>";
while($row=mysqli_fetch_assoc($result)){
echo "<tr>
<td>{$row['num']}</td>
<td>{$row['hinmei']}</td>
<td>{$row['kakaku']}</td>
</tr>";
}
echo "</table>";
?>
</body>
</html>
※関数はmysql_・・・
ではなくmysqli_・・・
であることに注意
※本来はtry-catch
文で例外(MySQLへ正常に接続できなかった場合)を考慮するが,分かりやすくするためにあえて例外を考慮しない
※区別しやすくするためにあえて字下げしている.タグごとにecho
文で分けても良い.
全てを1つのecho
文にまとめた例と分けた時の例を下に示す.どちらも同じ意味を持つ.
<?php
echo "<div><p>あいうえお</p></div>";
?>
<?php
echo "<div>";
echo "<p>";
echo "あいうえお";
echo "</p>";
echo "</div>";
?>
3. おわりに
さらに,
- データ登録画面
- データ削除画面
- データ更新(編集)画面
-
hinmei
やkakaku
の絞り込み検索機能(表示画面に追加)
などがあると便利ですね.気が向いたら記事を作成します.
プログラムは既に作成してあるんですけどね・・・.