I am getting the error: Cannot pass parameter 2 by reference in.....
in this line...
$stmt1->bindParam(\':value\', $_SESSION[\'quantity\'.$i] * $_
I'd say it's the typical confusion between PDO:bindParam() and what you probably intended to use: PDO:bindValue().
PDOStatement::bindParam
Binds a PHP variable to a corresponding named or question mark placeholder in the SQL statement that was used to prepare the statement. Unlike
PDOStatement::bindValue()
, the variable is bound as a reference and will only be evaluated at the time thatPDOStatement::execute()
is called.
PDOStatement::bindValue
Binds a value to a corresponding named or question mark placeholder in the SQL statement that was used to prepare the statement.
It expects the second paramter to be a variable which can be passed by reference. Assuming $stmt1
is a PDO statement then, as the docs for bindparam say
Unlike PDOStatement::bindValue(), the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.
Your second param is an expression ($_SESSION['quantity'.$i] * $_SESSION['price'.$i]
) not a variable. Since you appear to want to evaluate the exptression now, I guess you should used bindValue()
instead.