此问题在此处已有答案:
Use bound parameter multiple times(5个答案)
三年前就关门了。
ODBC的PDO语句有问题。
我在Windows Server 2003和PHP 5.4.x中使用SQL SERVER 7
例如:
我有查询:
(this不是实际的查询,但它适用于示例)
$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 ...的第一个匹配项,并且尝试再次绑定它也不起作用。
有没有办法绑定多个同名的命名参数?
我尝试不使用位置参数,而是使用?
3条答案
按热度按时间unftdfkk1#
理论上,您可以启用预准备语句的模拟。
当您呼叫PDOStatement::execute()时,您必须为每个要传入陈述式的值包含唯一的参数标记。除非开启仿真模式,否则您无法在已准备陈述式中多次使用相同名称的具名参数标记。
http://www.php.net/manual/en/pdo.prepare.php
guicsvcw2#
老实说,我对MsSQL了解不多,但我很确定MySQL中有一些与
User Defined Variables
等效的函数。您可以使用这些函数来代替我在下面的答案中描述的参数:https://stackoverflow.com/a/31068865/3391783
anhgbhbe3#
只需打开模拟,将此设置从false更改为true: