4.4 フィールド数とフィールド名を調べる

「odbc_num_fields関数」を使うと、結果セットのフィールド数を取得することができます。また、「odbc_field_name関数」を使うと、それぞれのフィールド名を取得することができます。
  • odbc_num_fields関数には、引数としてodbc_exec関数の返り値である結果セットIDを指定します。

  • odbc_field_name関数では、第1引数に結果セットIDを、第2引数にフィールドの番号を指定します。この番号は、先頭フィールドを「1」として数えます。1からodbc_num_fields関数の返り値までの範囲でodbc_field_name関数をループ処理することで、すべてのフィールド名を取得することができます。また、同様のループでodbc_result関数を実行することによって、フィールドの数や各フィールド名が分からない場合でも、全フィールドのデータを取り出すことができます。
次のスクリプトでは、「仕入先」テーブルを開いて各フィールド名を取得、表の列見出しにそれを出力するとともに、各レコードのデータも表に出力しています。その際、フィールド数を上限とするループで、すべてのフィールド名とフィールドデータを取り出しています。
<?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);

  //結果セットからフィールド数を取得
  $fldmax = odbc_num_fields($rst);
  $msg = "このテーブルには $fldmax ケのフィールドがあります。<BR><BR>";

  //各フィールドの名前を取得
  $body = "<TR>";
  for ($fldnum = 1; $fldnum <= $fldmax; $fldnum++) {
    $body .= "<TH>" . odbc_field_name($rst, $fldnum) . "</TH>";
  }
  $body .= "</TR>";

  //結果セットからデータをループで読み込み
  while (odbc_fetch_row($rst)) {
    $body .= "<TR>";
    //各フィールドのデータをループで読み込み
    for ($fldnum = 1; $fldnum <= $fldmax; $fldnum++) {
      $body .= "<TD>" . odbc_result($rst, $fldnum) . "</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>
<?=$msg?>
<TABLE border="1">
<?=$body?>
</TABLE>
</BODY>
</HTML>
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved