6.2 テーブルのレコードを読み込む

SQL Serverのデータベース内のテーブルに保存されているレコードを読み込むひとつの方法は、「mssql_query関数」「mssql_fetch_array関数」を使ってループで1レコードずつ読み込み方法です。

mssql_query関数は、SQL Serverデータベースに対してSQL文を発行するための関数です。この関数を使ってSELECT文を発行することによって、データベースからその結果セットを返り値として取得することができます。

続いて、mssql_fetch_array関数を使って、結果セットから1レコードずつを読み込みます。引数には、mssql_query関数の返り値である結果セットIDを指定します。
この関数を実行すると、返り値として結果セット内のカレントレコード(はじめて実行したときは1レコード目)の各フィールド値(保存されているデータ)が返されます。この返り値は連想配列となっており、インデックスにフィールド名を指定することによって個々のフィールドデータを取得することができます(例:$col["仕入先コード"])。
また、この関数を実行するたびに、カレントレコードは1つ次へ進みます。最後のレコードを過ぎるとFalseを返しますので、While文で返り値がFalseになるまで繰り返すことで、結果セット内の全レコードを読み込むことができます。

SELECT文を使ってレコードを読み込んだ場合、すべての読み込み処理が完了したら、最後に「mssql_free_result関数」を使って結果セットを破棄してメモリを解放します。引数には、結果セットIDを指定します。ただし、スクリプト終了時には自動的に解放されますので、結果セットのデータ量が膨大であるなど、PHPスクリプトを実行したときのメモリ使用量が極端に多いとき以外は省略することができます。
<?php

  $DBSERVER   = "localhost";    //SQL Serverサーバー名
  $DBUSER     = "testuser";     //ログインユーザー名
  $DBPASSWORD = "test";         //パスワード
  $DBNAME     = "NorthwindCS";  //データベース名

  //SQL Serverに接続
  if (! $con = mssql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) {
    exit("SQL Serverに接続できませんでした!");
  }
  //データベースを選択
  mssql_select_db($DBNAME);

  //仕入先テーブルから都道府県が東京都のレコードだけ読み込むSQLを組み立て
  $sql = "SELECT * FROM 仕入先 WHERE 都道府県 = '東京都'";
  //結果セットを取得
  $rst = mssql_query($sql);
  //結果セットからデータをループで読み込み
  while ($col = mssql_fetch_array($rst)) {
    $body .= "<TR>";
    $body .= "<TD>" . $col["仕入先コード"] . "</TD>";
    $body .= "<TD>" . $col["仕入先名"] . "</TD>";
    $body .= "<TD>" . $col["担当者名"] . "</TD>";
    $body .= "<TD>" . $col["部署"] . "</TD>";
    $body .= "<TD>" . $col["都道府県"] . "</TD>";
    $body .= "</TR>";
  }
  //結果セットを破棄
  mssql_free_result($rst);

  //SQL Serverとの接続を解除
  mssql_close();

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<TABLE border="1">
  <TR>
    <TH>仕入先コード</TH>
    <TH>仕入先名</TH>
    <TH>担当者名</TH>
    <TH>部署</TH>
    <TH>都道府県</TH>
  </TR>
<?=$body?>
</TABLE>
<BR>
</BODY>
</HTML>
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved