我正在将 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()
解决了我的问题。 最佳答案
使用 bindValue()
而不是 bindParam()
。 bindParam()
绑定(bind)到一个引用,因此当您执行查询时,所有参数都使用 $val
的最后一个值。