PHP データベース ODBC

ODBCはアプリケーションプログラミングインターフェース(Application Programming Interface、API)で、特定のデータソース(例えばMS Accessデータベース)に接続する能力を持たせます。

ODBC接続を作成する

ODBC接続が利用可能な場合、ネットワーク上のどのコンピュータ上のどのデータベースにも接続できます。

MS Accessデータに到達するODBC接続を作成する方法は以下の通りです:

  1. をダブルクリックしてコントロールパネルを開きます。管理ツール
  2. 中のデータソース (ODBC) アイコン
  3. システムを選択 DSNオプションタブ
  4. をクリックします。をクリックします。」ボタン
  5. 選択 Microsoft Access Driver。をクリックします。をクリックします。
  6. 次の画面で「選択」を使用してデータベースを特定します。
  7. このデータベースに名前を付けるデータソース名 (DSN)
  8. クリック確定

この設定は、あなたのウェブサイトがあるコンピュータ上で完了する必要があります。もしあなたのコンピュータにInternet Information Services (IIS)が動作している場合、上記の命令が有効ですが、あなたのウェブサイトがリモートサーバーにある場合、あなたはそのサーバーへの物理アクセス権を持っている必要があります、またはあなたのホストプロバイダーにDSNを作成してもらう必要があります。

ODBCに接続する

odbc_connect()関数はODBCデータソースに接続するために使用されます。この関数は4つの引数を持っています:データソース名、ユーザー名、パスワードおよびオプションのポインタータイプ引数。

odbc_exec()関数はSQL文を実行するために使用されます。

以下の例では、ユーザー名とパスワードがなく「northwind」と呼ばれるDSNに到達する接続を作成し、SQL文を作成し実行します:

$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers"; 
$rs=odbc_exec($conn,$sql);

レコードを取得する

odbc_fetch_row()関数は結果セットからレコードを返すために使用されます。行が返せる場合、trueを返し、返せない場合はfalseを返します。

この関数は2つの引数を持っています:ODBC結果識別子とオプションの行番号:

odbc_fetch_row($rs)

レコードからフィールドを取得する

odbc_result()関数はレコードからフィールドを読み取るために使用されます。この関数は2つの引数を持っています:ODBC結果識別子とフィールド番号または名前。

以下のコード行はレコードから最初のフィールドの値を返します:

$compname=odbc_result($rs,1); 

以下のコード行は「CompanyName」と呼ばれるフィールドの値を返します:

$compname=odbc_result($rs,"CompanyName");

ODBC接続を閉じる

odbc_close()関数はODBC接続を閉じるために使用されます。

odbc_close($conn);

ODBC インスタンス

以下の例では、まずデータベース接続を構築し、その後結果セットを構築し、HTML テーブルにデータを表示する方法を示します。

<html>
<body>
<?php
$conn=odbc_connect('northwind','','');
if (!$conn)
  {exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
  {exit("Error in SQL");}
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
while (odbc_fetch_row($rs))
{
  $compname=odbc_result($rs,"CompanyName");
  $conname=odbc_result($rs,"ContactName");
  echo "<tr><td>$compname</td>";
  echo "<td>$conname</td></tr>";
}
odbc_close($conn);
echo "</table>";
?>
</body>
</html>