PostgreSQLでプレースホルダーを使ってSELECT文を発行する方法

接続の参考:PostgreSQLへ接続](http://www.phpbook.jp/tutorial/postgresql/index3.html)

プレースホルダーでの発行は以下を参考
PHPでのSQLインジェクション対策 – プレースホルダ編
pg_execute

SELECT文の例

$dbconn = pg_connect("host=".DB_SERVER." dbname=".DB." user=".DB_USER." password=".DB_PW);
$result = pg_prepare($dbconn, "", 'SELECT * FROM dtb_order WHERE order_id = $1');
$result = pg_execute($dbconn, "", array($oid));

こうすると、$resultには、resource型の値が入ってくる。
そこから実際のデータを取得するためには、pg_fetch_arrayを使用する。

第3引数にPGSQL_NUMを指定すると、数字の配列で、
PGSQL_ASSOCを指定すると、連想配列の形式で取得出来る。

そして、全ての行にアクセスするには、pg_num_rowsを使用して何行返ってきたかを取得する。
その数字をカウントとして使用して、for文で回すことで全件取得する事が出来る。

for ($i = 0 ; $i < pg_num_rows($result) ; $i++){
    $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    var_dump($rows);
}

接続の切断は以下。

$close_flag = pg_close($dbconn);
if($close_flag) echo "切断成功";

参考:データの取得(SELECT)

php, sql
   このエントリーをはてなブックマークに追加