sesam_fetch_array

(PHP 3 CVS only)

sesam_fetch_array -- 連想配列としてレコードを 1 件取得する

説明

array sesam_fetch_array ( string result_id [, int whence [, int offset]] )

取得したレコードに対応する配列またはレコードがもうない場合には FALSE を返します。

sesam_fetch_array() は、 sesam_fetch_row() の連想配列版です。データを 結果配列の数値添字に保存する代わりに、データをフィールド名を キーとして連想配列に保存します。

result_id は、 sesam_query() (select 型クエリのみ!) により 返された有効な結果IDです。

オプションの whence および offset パラメータの有効な値の詳細については、 関数 sesam_fetch_row() を参照ください。

sesam_fetch_array() は、 指定した結果 ID が指す結果から 1 件分のレコードを取得します。 レコードは、連想配列として返されます。各結果カラムは、そのカラム (またはフィールド) 名に等しい連想配列の要素に保存されます。カラム名は、 小文字に変換されます。

フィールド名がないカラム (例えば、数値演算の結果) および空の フィールドは、配列に保存されません。また、同じカラム名にが 2 つ以上ある場合、最後のカラムが優先されます。この場合、 sesam_fetch_row() をコールするかそのカラムへの エイリアスを作成してください。

SELECT TBL1.COL AS FOO, TBL2.COL AS BAR FROM TBL1, TBL2

特別な処理により "複数フィールド" カラム (もしくは同じカラム名を 有するカラム) を取得することが可能になります。"複数フィールド" の 各カラムに関して、添字名は、文字列 "(n)" を付加することにより 構築されます。ただし、n は複数フィールドのカラムの副添字であり、 1 から宣言済みの反復数までの範囲となります。クエリ構文で使用される 表記に一致させるために添字はゼロを基準にしていません。 次のように宣言されているあるカラムの場合、

CREATE TABLE ... ( ... MULTI(3) INT )

個々の "複数フィールド" カラムに関して連想添字は、それぞれ "multi(1)","multi(2)", "multi(3)" になります。

sesam_fetch_array() を続けてコールした場合、 結果集合の次の (スクロール属性に応じて前または n 番目の前/後) レコードまたはレコードがもうない場合に FALSE を返します。

例 1. SESAM 配列の取得

<?php
$result
= sesam_query("SELECT * FROM phone\n" .
                       
"  WHERE LASTNAME='" . strtoupper($name) . "'\n".
                       
"  ORDER BY FIRSTNAME", 1);
if (!
$result) {
    
/* ... エラー ... */
}
// テーブルの表示
echo "<table border=\"1\">\n";
while ((
$row = sesam_fetch_array($result)) && count($row) > 0) {
    echo
"<tr>\n";
    echo
"<td>" . htmlspecialchars($row["firstname"]) . "</td>\n";
    echo
"<td>" . htmlspecialchars($row["lastname"]) . "</td>\n";
    echo
"<td>" . htmlspecialchars($row["phoneno"]) . "</td>\n";
    echo
"</tr>\n";
}
echo
"</table>\n";
sesam_free_result($result);
?>

添字配列を返す sesam_fetch_row() も参照ください。