Использование подстановочных знаков LIKE внутри pg_prepare

Я пытался использовать LIKE внутри подготовленного оператора, но php не будет выполнять оператор из-за синтаксической ошибки из-за использования подстановочного знака%.

Вот код

$query = pg_prepare($conn, "MyStatement", 
    'SELECT "Query" from "MyTable" 
     WHERE "Query" LIKE $1% 
     ORDER BY "MyColumn" DESC;');

$result = pg_execute($conn, "MyStatement", array($my_param));

Дело в том, что php показывает мне предупреждение во второй строке, утверждая синтаксическую ошибку.

Заранее большое спасибо!!!

1 ответ

Решение

У меня были те же параметры привязки проблемы с использованием адаптеров PDO. Решение состоит в том, чтобы передать "%" с помощью переменной:

$query = pg_prepare($conn, "MyStatement", 
'SELECT "Query" from "MyTable" 
 WHERE "Query" LIKE $1 
 ORDER BY "MyColumn" DESC;');

$result = pg_execute($conn, "MyStatement", array($my_param."%"));

Если тебе надо

...LIKE '%param%' ...

Тогда ваш запрос будет:

$result = pg_execute($conn, "MyStatement", array("%".$my_param."%"));
Другие вопросы по тегам