6.2 PHPによるMySQL操作の基礎
■PHPファイルの漢字コード
以上 の環境では、PHPファイルに漢字を使う場合は 「EUCコード」 である必要があります。一般にWindows環境では、エディターは漢字コードとしてSHIFT-JIS(SJIS)コードを使用しています。
(1) したがって、たとえばエディターソフトの「秀丸」を使う場合は、作成したPHPファイル等を保存する場合は、以下のように「EUCコード」に設定して保存する必要があります。「名前をつけて保存」ダイアログボックスの下の「文字コード」で「EUC(改行コード=LF)」を選択し、「保存」ボタンをクリックします。

(2)逆に、「EUCコード」で記述されたPHPファイル等をエディターで読み取る場合も、漢字コード指定を「EUCコード」に設定します。「ファイルを開く」ダイアログボックスの下の「文字コード」で「EUC」を選択し、「開く」ボタンをクリックします。

■データベースサーバへの接続
PHPでMySQLで作成したデータベースにアクセスするには、まずデータベースサーバ(ホスト)に接続する必要があります。データベースサーバに接続するには、mysql_connect()関数を使います。
接続ID = mysql_connect(ホスト名,ユーザ名,パスワード)
ここでは、ホスト名は「localhost」、ユーザ名は「webapl」、パスワードは「pass123」とします。PHPのソースコードの例を以下に示します。
$db_host = "localhost";
$db_user = "webapl";
$db_passwd = "pass1234";
$db = mysql_connect($db_host,$db_user,$db_passwd);
戻り値$dbには、データベースへの接続IDが代入されます。この後は、この接続IDを参照してデータベースにアクセスします。
■データベースの選択
次に、接続したデータベースサーバの中から利用するデータベースを選択します。データベースを選択するには、mysql_select_db()関数を使います。
mysql_select_db(データベース名、接続ID)
ここでは、データベースとして「db_販売管理」を選択することとします。
$db_name = "db_販売管理";
mysql_select_db($db_name,$db);
選択に成功すれば、戻り値はTRUE、失敗すればFALSEとなります。ここでは、戻り値を使わないステートメントとしています。
■SQL文の実行
選択したデータベースに対してSQL文を実行するには、mysql_query()関数を実行します。
結果ID = mysql_query(SQL文,接続ID);
ここでは、tbl_商品表テーブルからすべてのフィールドとすべてのレコードを表示するSQL文を実行します。
$str_sql = "select * from tbl_商品表";
$rs = mysql_query($str_sql,$db);
戻り値には、SQL文の処理結果が格納されます。これを「結果ID」あるいは「結果セット」と呼びます。
■レコードの読み取り
結果セットには現在のレコードを示すポインタがあります。最初は結果セットの第1レコードを示しています。現在のレコードのデータをフィールド名をキー値とする連想配列で読み出すには、mysql_fetch_assoc()関数を使います。while文と組み合わせることにより、結果セット内のレコードを順次読み出すことができます。
while(mysql_fetch_assoc(結果ID))
{
各レコードごとの処理
}
各レコードごとに、フィールド名とその値を表示するソースコードの例を以下に示します。
while($arr_item = mysql_fetch_assoc($rs))
{
foreach($arr_item as $key => $value)
{
print "[{$key}] = {$value}<br>\n";
}
print "<br>\n";
}
■データベースサーバへの接続の切断
データベースに対する処理がすべて終わったら、データベースサーバへの接続を切断します。
mysql_close(接続ID)
mysql_close($db);
■テーブルの表示例
データベースサーバに接続し、一つのテーブル全体を参照し、ブラウザに表示するもっとも簡単なPHPスクリプト「connect.php」を以下に示します。内容は、上記の一連の処理を一つの流れとして、まとめて記述したものです。
「connect.php」
<html>
<head>
<title>connect.php</title>
</head>
<body>
<?php
//データベースサーバ名の設定
$db_host = "localhost";
//ユーザ名の設定
$db_user = "webapl";
//パスワードの設定
$db_passwd = "pass1234";
//データベースサーバへの接続
$db = mysql_connect($db_host,$db_user,$db_passwd);
//データベース名の設定
$db_name = "db_販売管理";
//データベースの選択
mysql_select_db($db_name,$db);
//SQL文の設定
$str_sql = "select * from tbl_商品表";
//SQL文の実行
$rs = mysql_query($str_sql,$db);
//結果セット内の各レコードを順次参照し、連想配列に代入
while($arr_item = mysql_fetch_assoc($rs))
{
//レコード内の各フィールド名と値を順次参照
foreach($arr_item as $key => $value)
{
//フィールド名と値を表示
print "[{$key}] = {$value}<br>\n";
}
print "<br>\n";
}
//データベースサーバへの接続の切断
mysql_close($db);
?>
</body>
</html>
この「connect.php」ファイルをユーザ「test」のホームディレクトリである「c:\Apache2\users\test\public_html」のフォルダに保存します。
ブラウザを開き、URLに「http://localhost:8080/~test/connect.php」と記入しアクセスします。以下のようにデータベース「db_販売管理」の中のテーブル「tbl_商品表」のすべてのレコードのすべてのフィールド名と値が表示されます。

|