首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PDO bindParam/bindValue多次

PHP PDO bindParam/bindValue多次
EN

Stack Overflow用户
提问于 2014-06-30 11:29:03
回答 3查看 4.1K关注 0票数 3

我对ODBC的PDO语句有一个问题。

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

例如:

我有一个疑问:

(这不是实际的查询,但在示例中是正确的)

代码语言:javascript
复制
$query = SELECT * FROM table WHERE number = :number OR number = :number

在我的php中,我有:

代码语言:javascript
复制
$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();

这会抛出错误

代码语言:javascript
复制
COUNT field incorrect or syntax error

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

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

我正在尝试不使用位置参数,使用?相反,

EN

回答 3

Stack Overflow用户

发布于 2014-06-30 12:07:22

从理论上讲,您可以启用预准备语句的仿真。

execute调用PDOStatement::

()时,对于要传递给语句的每个值,必须包括一个唯一的参数标记。除非启用了仿真模式,否则不能在预准备语句中多次使用同名的命名参数标记。

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

票数 5
EN

Stack Overflow用户

发布于 2015-10-01 17:43:00

老实说,我对MsSQL了解不多,但我非常确定在MySQL中有一些与User Defined Variables等效的东西。您可以使用这些参数,而不是我在回答中描述的参数:

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-01 18:00:49

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

代码语言:javascript
复制
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24482586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档