我正在尝试在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驱动程序应为最新版本
答案 0 :(得分:0)
我很久以前就找到了错误的原因。我看到有人赞成这个,所以我现在发布这个:
MS Access确实不支持预准备语句!
这有点令人困惑,因为只要没有实际参数并且错误消息没有任何相关性,PHP实际上允许您使用odbc_prepare()调用。
但它不可能用MS ACCESS数据库做预备语句。