PHP PDO bindParam / bindValue多次

时间:2014-06-30 03:29:03

标签: php pdo sqlbindparameter

我遇到了ODBC的PDO语句问题。

我在Windows Server 2003和PHP 5.4.x中使用SQL SERVER 7

例如:

我有查询:

(这不是实际的查询,但它适用于示例)

$query = SELECT * FROM table WHERE number = :number OR number = :number

在我的php中我有:

$conn = new PDO($connectionString);

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$statement = $conn->prepare($query);

$statement->bindParam(':number', $someNumber);

$statement->execute();

这会引发错误

COUNT field incorrect or syntax error

问题是,bindParam仅绑定第一次出现的:number ... AND尝试再次绑定它也不起作用。

有没有办法绑定多个具有相同名称的命名参数?

我试图不使用位置参数?代替

3 个答案:

答案 0 :(得分:4)

理论上你可以开始模拟准备好的陈述。

  

您必须为您希望的每个值包含唯一的参数标记   调用PDOStatement :: execute()时传入语句。您   不能多次使用同名的命名参数标记   准备好的声明,除非启用仿真模式。

http://www.php.net/manual/en/pdo.prepare.php

答案 1 :(得分:0)

说实话,我并不太了解MsSQL,但我确信在MySQL中有一些等同于User Defined Variables的内容。您可以使用这些参数而不是我在本回答中描述的参数:

https://stackoverflow.com/a/31068865/3391783

答案 2 :(得分:0)

只需打开仿真,将此设置从false更改为true:

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);