SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

PHPを使ってデータベースを操作しよう!
プログラミング未経験から始めるPHP入門(7)

第7回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (4.0 KB)

PHPからのSQL実行

 次に「search1.php」内の、SQL実行部分を見ていきます。

$sql = "SELECT * FROM restaurant";
$res = mysql_query( $sql );
if( $res == false )
{
	die("エラーが発生しました。");
}

 上記の部分では、まず変数$sqlに前回勉強したSQLのSELECT文を代入しています。その後、mysql_queryという命令を使用して、SQLを実行します。mysql_query命令でSELECT文を指定した場合、戻り値として「検索結果」が返ってきます。SQLがエラーの場合は、先ほどと同様「false」という戻り値になり、続くif文の条件に代入されプログラムが終了します。

 検索結果である$resという変数は、このまま

while( $row = mysql_fetch_array( $res ) )

 の行で、mysql_fetch_arrayという検索結果から1行ずつ取り出す命令に渡されます。

 ここで、ある条件の間処理を繰り返すwhileループが出てきました。このループは、「検索結果から一行ずつ読み込んで、まだ読み込む行がある限り(つまり、全ての検索結果が読み込み終わるまで)繰り返す」という意味です。この書き方は検索結果を表示する際に使う定型句ですから、そのまま覚えてしまいましょう。例えばテーブル内に4店舗の情報があった場合、このループは4回繰り返され、$rowという連想配列に1行ずつ検索結果が代入されます。

whileループの構造
whileループの構造

 ここで、連想配列$rowのキーはデータベースのカラム名となります。例えば、restaurantテーブルのaddressカラムを表示したいのであれば、print( $row["address"] );と記述します。同様に、$row["name"]$row["price"]と記述すれば、nameカラムやpriceカラムの値を表示することが可能です。

従ってPHPプログラムの

while( $row = mysql_fetch_array( $res ) )
{
	print("<tr>");
	print("<td>" . $row["restaurant_no"] . "</td>");
	print("<td>" . $row["address"] . "</td>");
	print("<td>" . $row["name"] . "</td>");
	print("<td>" . $row["price"] . "</td>");
	print("</tr>\n");
}

 の部分が、検索された店舗数分の情報を実際に画面に表示している箇所となります。print命令の中で使われている「ドット()」記号は、"<td>"など変数以外の文字と、変数をつなげて表示するための記号です。表示している内容が分かり辛いようでしたら、画面のソースの表示を行い、実際に生成されたHTMLを確認してみてください。

<tr><td>1</td><td>渋谷</td><td>うさぎや</td><td>2500</td></tr>
<tr><td>2</td><td>高円寺</td><td>パンケーキーズ</td><td>2000</td></tr>
<tr><td>3</td><td>千葉</td><td>ビストロアーシュ</td><td>3500</td></tr>
<tr><td>4</td><td>新宿</td><td>エスカルゴ</td><td>4000</td></tr>
…

 上記のようなHTMLが生成されていることが分かるはずです。<tr>タグで囲まれた部分が一行を表し、<td>タグで囲まれた文字が一つのセルを表します。このような構造をHTMLでは「テーブル」と呼びます。テーブルについてより詳しく知りたい方は、The Web KANZAKI 「テーブル -- ごく簡単なHTMLの説明」のようなWebサイトを参考に調べてみてください。

検索結果の表示が終わったら、mysql_free_resultという命令を用い検索結果を抹消します。大きなサイトでは検索結果が膨大なレコード数になることもあり得ますから、PHPの負担が大きくならないよう、表示が終わったらきちんと抹消しなければなりません。それを行っているのが下記の1文です。

mysql_free_result($res);

最後に、以下の1文で mysql との接続を切断します。

mysql_close();

次のページ
絞込み検索を行うSELECT文の実行

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3801 2009/04/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング