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

use*_*186 2 php pdo

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

在这一行......

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

上面的代码有什么问题?

Álv*_*lez 6

我想说这是PDO之间的典型混淆:bindParam()和你可能打算使用的东西:PDO:bindValue().

PDOStatement::bindParam

将PHP变量绑定到用于准备语句的SQL语句中的相应命名或问号占位符.与此不同PDOStatement::bindValue(),变量被绑定为引用,并且仅在PDOStatement::execute()被调用时进行求值 .

PDOStatement::bindValue

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


Ada*_*dam 5

它期望第二个参数是可以通过引用传递的变量。假设$stmt1是一个PDO语句,如bindparam 的文档所述

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

您的第二个参数是表达式($_SESSION['quantity'.$i] * $_SESSION['price'.$i]),而不是变量。由于您似乎现在想评估该分布,我想应该bindValue()改用它。