Intereting Posts
Как создать водяной знак изображения wm_type наложения в Codeigniter? Нужно ли мне взломать ZendFramework1.10.8 / Doctrine1.2.2, чтобы получить модель? Показывать подкатегорию вместо Root в меню rss Xml путаница пространства имен PHP: сортировка массива Изображение автоматически поворачивается при загрузке Не работает mysqli_connect_errno. Загрузка уникальной страницы в зависимости от идентификатора для социальной сети Класс вызывает функцию в другом классе php / curl: удалить cookie, созданный с помощью CURLOPT_COOKIEJAR Переменная, содержащая путь в виде строки для многомерного массива? PHP Предупреждение: mysqli_stmt :: bind_param (): Число переменных не соответствует количеству параметров в подготовленном сообщении Выполняются ли множественные назначения переменных по значению или ссылке? Передайте массив, где в Codeigniter Active Record Запрошенный URL / имя_проекта / пользователи не были найдены на этом сервере. Laravel

Не удается передать параметр 2 по ошибке ссылки в php PDO

Я получаю ошибку: невозможно передать параметр 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, которое использовалось для подготовки оператора.