Понимание параметров в Postgres Like команда в PHP - PullRequest
3 голосов
/ 25 августа 2009

Как использовать параметры в команде Postgres Like?

Я читаю этот документ . Я пытаюсь найти слово lorem в таблице questions и в ее столбце body.

Я неудачно запускаю следующий код внутри PHP

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike '%$1%'",
    array ( $_GET['search'])                                                                                                                                                       
);

Я получаю это предупреждение

Предупреждение: pg_query_params () [function.pg-query-params]: Запрос не удалось: ОШИБКА: связать сообщения 1 параметры, но подготовлено заявление "" требует 0 в /var/www/codes/search_body.php на линии 10 Стек вызовов

Ответы [ 2 ]

8 голосов
/ 25 августа 2009

Вы должны использовать параметр вместо одного целого значения, а не внутри кавычек.

Решение 1: объединить символы LIKE в значение параметра:

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike $1",
    array ( "%" . $_GET['search'] . "%")
);

Решение 2: объединить символы LIKE в выражении SQL:

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike '%' || $1 || '%'",
    array ( $_GET['search'] )
);
2 голосов
/ 25 августа 2009

Я думаю, что, поскольку $ 1 заключен в одинарные кавычки, он воспринимается как литерал, а не как заполнитель.

Попытка:

$result = pg_query_params ( $dbconn, 
    "SELECT question_id, body
    FROM questions
    WHERE body ilike $1",
    array ('%' . $_GET['search'] . '%')                                                                                                                                                       
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...