提问人:MH2K9 提问时间:10/2/2014 最后编辑:MH2K9 更新时间:11/4/2014 访问量:1825
PDO bindParam 在 foreach 中不起作用
PDO bindParam not working in foreach
问:
我正在用于应用程序,但遇到了问题。我有一个数组,我想使用数组的值来使用循环,或者但意外的结果是。当我在循环中使用时,它工作正常。我尝试的是PDO
PDO bindParam()
PDO bindParam()
for
foreach()
foreach()
bindParam()
for
$con = $this->connection();
$stmt = $con->prepare($sql);
for($i = 0; $i < count($params); $i++){
$stmt->bindParam($i + 1, $params[$i], PDO::PARAM_STR, 10);
}
$stmt->execute();
$result = $stmt->fetchAll();//$result is OK
但是当我使用时,结果我得到了一个空的。在代码下方bindParam()
foreach()
array()
$con = $this->connection();
$stmt = $con->prepare($sql);
foreach($params as $key=>$val){ //Here
$stmt->bindParam($key + 1, $val, PDO::PARAM_STR, 10);
}
$stmt->execute();
$result = $stmt->fetchAll(); //$result is an empty array
我想知道为什么会这样。我找不到原因。任何信息将不胜感激。
编辑:我用代替解决了我的问题。bindValue()
答:
6赞
TML
10/2/2014
#1
如果数组中已经有项,则没有理由在循环中调用;只需做:$stmt->bindParam
$con = $this->connection();
$stmt = $con->prepare($sql);
$stmt->execute($params);
$result = $stmt->fetchAll();
根据 PHP 文档:
执行预准备语句。如果准备好的语句包括 参数标记,则必须:
调用 PDOStatement::bindParam() 将 PHP 变量绑定到参数 标记:绑定变量将其值作为输入传递并接收 其关联参数标记的输出值(如果有)
或传递仅输入参数值的数组
15赞
Barmar
10/2/2014
#2
use 代替 . 绑定到引用,因此在执行查询时,所有参数都使用 的最后一个值。bindValue()
bindParam()
bindParam()
$val
评论
0赞
Tibor B.
10/2/2014
我正要发布这个。这是正确答案。
0赞
Barmar
10/2/2014
bindValue()
没有参数。您的查询是否有必要?driver_options
0赞
Janie
7/7/2017
@Barmar如何在执行之前显示完整的 SQL 查询字符串?
0赞
Barmar
7/8/2017
@Janie 查看 stackoverflow.com/questions/210564/...
评论
$params