Intereting Posts
PHP получатель формы отправки электронной почты не получает правильный адрес электронной почты sendr Расширение масштабирования продукта Magento не работает в моей настраиваемой теме Перезапустите Nginx через скрипт PHP Код для получения размера файла после загрузки и вставки в таблицу не работает PHP двухмерный массив в HTML Как установить параметр функции PHP для переменной в качестве значения по умолчанию Использование красноречивых полиморфных отношений для категоризации данных в Laravel Перенос приложения php для обработки UTF-8 Как получить facebook нравится, делиться, комментарии подсчитываются из статьи Группы проверки достоверности форм Symfony2 без объектов Как изменить папку просмотра в Laravel5? dompdf ошибочно вычисляет разрывы строк typehinting: метод должен принимать любой $ arg, являющийся объектом Возврат из файла include Как сделать SELECT в PHP / MySQL нечувствительным?

pg_query_params return error: bind message supplies 2 параметра, но подготовленный оператор "" требует 1

$Query = pg_query_params($db, 'SELECT username FROM users WHERE id = $1 AND password=(crypt(\'$2\',password)) LIMIT 1', array(33,'thepassword')); 

«связывать сообщения с поставками 2 параметра, но подготовленный оператор« »требует 1"

Проблема возникает вокруг параметра «$ 2», строка heredoc не работает.

Предложения?

Одиночные кавычки используются в SQL для строковых литералов. Это означает, что это:

 '$2' 

это просто строка, которая содержит символы $ и 2 а не заполнитель. Если вы хотите заполнить место, вам нужно оставить цитаты:

 $Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword')); 

Это дает вам местозаполнитель, а не строковый литерал.