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

Accessデータベースファイル内にあるテーブルからレコードを読み込むには、次のような手順でスクリプトを記述します。
  1. 「odbc_connect関数」によってAccessデータベースに接続します。

  2. 「odbc_exec関数」を使って、SELECT文を使ったSQLをデータベースに対して発行します。
    • この関数では、最初の引数にodbc_connect関数の返り値である接続IDを、第2引数にSQL文を指定します。
    • SELECT文を発行した場合、odbc_exec関数の返り値が、取得した結果セットを表わすIDとなります。

  3. 続いて、「odbc_fetch_row関数」を使って1レコード分のレコード移動を行います。引数には、odbc_exec関数の返り値である結果セットIDを指定します。
    この関数を実行すると、カレントレコードを示すポインタが1つ次のレコードに進みます。最後のレコードまで達したあとにこの関数を実行するとFalseが返されますので、それを検出することによって、ループで全レコードを読み込むことができます。
    ※ただし1レコード目のデータだけを取得したいような場合には、特性として、odbc_fetch_row関数を実行しなくてもodbc_result関数によってそのレコードの内容を取り出せる状態になっています。

  4. カレントレコードの各フィールドに保存されているデータは、「odbc_result関数」によって取得することができます。
    この関数では、最初の引数に結果セットIDを指定します。
    一方、第2引数にはデータを取り出すフィールドを指定しますが、次の2種類の記法が可能です。
    • テーブル上で定義されているフィールド名を文字列として指定する
      たとえば「仕入先コード」フィールドのデータを取り出す場合には、「odbc_result($rst, "仕入先コード")」のように記述します。
    • 読み込むフィールドの番号を指定する
      先頭フィールドを「1」として数えた番号を指定します。2番目のフィールドなら「2」となります。
<?php

  $DSN        = "AccessPHP";    //データソース名
  $DBUSER     = "";             //ログインユーザー名
  $DBPASSWORD = "";             //パスワード

  //Accessデータベースに接続
  if (! $con = odbc_connect($DSN, $DBUSER, $DBPASSWORD)) {
    exit("Accessデータベースに接続できませんでした!");
  }

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

  //ODBCとの接続を解除
  odbc_close($con);

?>

<!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