フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

PHPでAccessデータベースへODBC接続する際のプレースホルダの仕様

Accessを使い慣れている人には常識なのかもしれませんが、少々ハマったのでメモしておきます。

通常、PHPのODBCでプリペアドステートメントを使用する場合は以下のように書きます(参考:odbc_prepare)。

// 公式の例の通り
$stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));

ところが、対象データベースがAccessの場合は以下のように ? をクォートで囲まないとエラーになります。

// ? をクォートで囲む必要がある
$stmt    = odbc_prepare($conn, "CALL myproc('?','?','?')");

Accessでは ? がワイルドカードとして扱われるのが原因なのでしょうか。
本来はドライバが吸収すべき点だと思うのですが・・・。

[紹介元] PHPタグが付けられた新着投稿 – Qiita PHPでAccessデータベースへODBC接続する際のプレースホルダの仕様

コメント

記事に戻る

コメントを残す