参数不起作用的odbc_execute(空警告)

时间:2012-10-01 12:28:10

标签: php ms-access odbc

我正在尝试在MS-Access数据库上执行简单的选择查询。 当然我想防止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,MS Access驱动程序应为最新版本

1 个答案:

答案 0 :(得分:0)

我很久以前就找到了错误的原因。我看到有人赞成这个,所以我现在发布这个:

MS Access确实不支持预准备语句!

这有点令人困惑,因为只要没有实际参数并且错误消息没有任何相关性,PHP实际上允许您使用odbc_prepare()调用。

但它不可能用MS ACCESS数据库做预备语句。