前回データベースの選択まで辿りつきました。今度はなにか簡単なSQLを発行してデータを表示させてみようと思います。
今、あるデータベース領域に↓みたいな表が格納されているとします。
T_商品リスト
商品コード | 商品名 | 値段 |
---|---|---|
011 | こん棒 | 80 |
012 | 鉄パイプ | 180 |
013 | 釘バット | 500 |
この表からデータを引っこ抜いてページに表示してみましょう。
選択されたデータベースに対してSQLを発行するには
mysql_query('SQL文')
を用います。
mysql_connect('select * from T_商品リスト')
※ターミナルでSQLを実行するときに文末につける;(セミコロン)は不要です。
となりますのでこれをここまで作ってきた処理の中に組み込んでみます。
<html>
<head><tiele>PHPからMySQLに接続</title></head>
<body>
<?php
$link=mysql_connect('ホスト名','ユーザ名','パスワード');
if(!$link){
die('接続失敗'.mysql_error());
}
print('<p>接続成功</p>');
$db_select=mysql_select_db('データベース名',$link);
if(!$db_select){
die('選択失敗'.error());
}
print('<p>選択完了</p>');
$result=mysql_query('select * from T_商品リスト where 商品コード=011');
if(!$result){
die('クエリがおかしいよ'.error());
}
print('<p>クエリが動いたよ</p>');
$close=mysql_close($link);
if(!$close){
die('切断失敗'.mysql_error());
}
print('<p>切断しました。</p>');
?>
</body>
</html>
これを動かしてみると・・・
どうやらクエリが動いたことは分かりますが抽出した値はどこにも出てきませんね?
mysql_queryが行ってくれるのはクエリの実行のみで、値を取り出すには別の処理を加えてやらないといけないようです。
手っ取り早く配列に格納する方法のひとつとして
mysql_fetch_assoc(クエリ発行結果のリソース型)
がありますので使ってみましょう。
が、これだと最初の行しか処理されず全ての結果を表示させることができません。
そこで「While ~」構文を使用して抜き出した全行を表示します。
これを一連の処理として纏めると・・・
<html>
<head><tiele>PHPからMySQLに接続</title></head>
<body>
<?php
$link=mysql_connect('ホスト名','ユーザ名','パスワード');
if(!$link){
die('接続失敗'.mysql_error());
}
print('<p>接続成功</p>');
$db_select=mysql_select_db('データベース名',$link);
if(!link){
die('データベース選択に失敗');
}
print('<p>データベース選択完了</p>');
$result=mysql_query('select * from T_商品リスト');
if(!$result){
die('クエリがおかしいよ'.error());
}
print('<p>クエリが動いたよ</p>');
while($row=mysql_fetch_assoc($result)){;
print('<p>商品コードは「'.$row['商品コード'].'」、</p>');
print('<p>商品名は「'.$row['商品名'].'」、</p>');
print('<p>値段は「'.$row['値段'].'円」だよ</p>');
}
$close=mysql_close($link);
if(!$close){
die('切断失敗'.mysql_error());
}
print('<p>切断しました。</p>');
?>
</body>
</html>
となります。
いかがでしょう?
ちょっと見辛い感じはしますが結果は出力できたようです。
次はページ上のフォームに入力した値を使用してデータ抽出を行う術を検討します。
[rakuten]rakutenkobo-ebooks:11114848[/rakuten]