Я получаю ошибку: невозможно передать параметр 2 по ссылке …..
в этой строке …
$stmt1->bindParam(':value', $_SESSION['quantity'.$i] * $_SESSION['price'.$i], PDO::PARAM_STR);
Что не так с кодом выше?
Он ожидает, что вторым параметром будет переменная, которая может быть передана по ссылке. Предполагая, что $stmt1
является инструкцией PDO, тогда, как говорят документы для bindparam
В отличие от PDOStatement :: bindValue () переменная привязана как ссылка и будет оцениваться только в момент вызова PDOStatement :: execute ().
Второй параметр – выражение ( $_SESSION['quantity'.$i] * $_SESSION['price'.$i]
) не переменная. Поскольку вы, кажется, хотите оценить exptression сейчас, я думаю, вы должны использовать bindValue()
вместо этого.
Я бы сказал, что это типичная путаница между PDO: bindParam () и тем, что вы, вероятно, намеревались использовать: PDO: bindValue () .
PDOStatement::bindParam
Привязывает переменную PHP к соответствующему заполнителю имени или вопроса в выражении SQL, который использовался для подготовки оператора. В отличие от
PDOStatement::bindValue()
переменная привязана как ссылка и будет оцениваться только в моментPDOStatement::execute()
.
PDOStatement::bindValue
Привязывает значение соответствующему имени или вопросительному знаку в выражении SQL, которое использовалось для подготовки оператора.