PHP中的ADODB Prepare语句抛出错误

PHP中的ADODB Prepare语句抛出错误,php,oracle,prepared-statement,adodb,Php,Oracle,Prepared Statement,Adodb,我们有PHP5.2.13和ADODB2.8版本,用于使用Oracle数据库的网站。最初,我们的查询没有参数化,可能会邀请SQL注入。因此,我们决定切换到参数化查询。现在,当我尝试“准备”语句时,我得到错误“参数类型错误、超出可接受范围或相互冲突”。我尝试了所有可能的代码,但没有运气。是不是ADODB2.8不支持预先准备好的语句?奇怪的是,如果我把函数名写错了,比如prepar(没有E),我仍然会得到上面提到的错误 我正在使用的示例代码如下所示: $stmt = $connection->p

我们有PHP5.2.13和ADODB2.8版本,用于使用Oracle数据库的网站。最初,我们的查询没有参数化,可能会邀请SQL注入。因此,我们决定切换到参数化查询。现在,当我尝试“准备”语句时,我得到错误“参数类型错误、超出可接受范围或相互冲突”。我尝试了所有可能的代码,但没有运气。是不是ADODB2.8不支持预先准备好的语句?奇怪的是,如果我把函数名写错了,比如prepar(没有E),我仍然会得到上面提到的错误

我正在使用的示例代码如下所示:

$stmt = $connection->prepare("SELECT NAME, POSITION FROM DEPT WHERE NAME=? AND DEPT=?");
我也尝试过使用冒号绑定参数,但没有成功。OCI和MYSQL有很多可用的代码,但对于使用PHP的人来说,Oracle似乎是一个灰色地带


PS:我对PHP了解不多,因为它不是我的专业领域。

您两次使用相同的占位符,
。我猜
prepare()
语句不接受两个相等的占位符。即使我使用一个占位符,错误也会相同。如果手动执行,您是否可以运行查询,例如,将其复制并粘贴到SQL控制台中,并用实际值替换
?是的,查询工作得很好。每个查询都会抛出错误,即使这类似于从dualSelect SYSDATE尝试只写入关键字大写,这可能是一个问题。