LoginSignup
1
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-18

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2