MS-Accessデータベースで単純なselect-queryを実行しようとしています。もちろん、SQLインジェクションを防ぎたいので、パラメーター付きのプリペアドステートメントを使用したい
$conn = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=/path/to/mdb/file.mdb", "ADODB.Connection", "password", SQL_CUR_USE_ODBC);
$res = odbc_prepare($conn, "SELECT * FROM customers WHERE holdingnumber = ?");
odbc_execute($res, array( 20000 ));
$row = odbc_fetch_array($res);
print_r($row);
それを試してみると、空の警告が表示されます。
Warning: odbc_execute(): in D:\xampp\htdocs\ZEOnline\test.php on line 5
しかし、パラメーターなしでそれを行うと('?'を20000に置き換え、odbc_executeから配列を削除する)、それは機能します。
なぜこれが機能しないのか、またはodbcの文字列を適切にエスケープする他の方法があるのか誰かが知っていますか?
PHPのバージョンは5.4.4であり、MSAccessDriverが最新バージョンである必要があります