在php PDO中无法通过引用错误传递参数2

时间:2014-07-27 10:43:19

标签: php pdo

我收到错误: .....中无法通过参考传递参数2

在这一行...

$stmt1->bindParam(':value', $_SESSION['quantity'.$i] * $_SESSION['price'.$i], PDO::PARAM_STR);   

上面的代码有什么问题?

2 个答案:

答案 0 :(得分:6)

我想说这是PDO:bindParam()与您可能打算使用的内容之间的典型混淆:PDO:bindValue()

  

PDOStatement::bindParam

     

将PHP变量绑定到相应的命名或问号   占位符在用于准备的SQL语句中   声明。与PDOStatement::bindValue()不同,变量是绑定的   作为参考,只会在当时进行评估   PDOStatement::execute()被称为。{/ p>

  

PDOStatement::bindValue

     

将值绑定到相应的命名或问号占位符   用于准备语句的SQL语句。

答案 1 :(得分:4)

它希望第二个参数是一个可以通过引用传递的变量。假设$stmt1是PDO语句,那么作为bindparam的docs

  

与PDOStatement :: bindValue()不同,该变量被绑定为引用   并且只会在PDOStatement :: execute()的时候进行评估   调用。

你的第二个参数是表达式($_SESSION['quantity'.$i] * $_SESSION['price'.$i])而不是变量。由于您似乎现在想要评估排毒,我猜您应该使用bindValue()代替。