我正在使用PDO
作为应用程序,但得到PDO bindParam()
的问题。我有一个阵列,我想使用PDO bindParam()
使用for
循环或foreach()
阵列的值,但意想不到的结果是通过foreach()
得到。当我在for
循环中使用bindParam()
时,它工作正常。我试过了PDO bindParam不在foreach中工作
$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
但是,当我在foreach()
使用bindParam()
然后我得到了一个空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()
代替我解决了我的问题。
'$ params'定义在哪里? – Jez 2014-10-02 15:21:09
@Jez它是从函数参数! – MH2K9 2014-10-02 15:22:11