@MdaUZH

Prepare statement для like?

Всем привет, возникла проблема с подготовкой выражения для SQL LIKE..

Есть запрос вида:
prepare...('SELECT * FROM table WHERE field LIKE '%:like%' ...);
и тут же делаю такой бинд:
$bind['like'] = $myVar

а массив $bind передаю в $pdo->execute($bind)

Но ничего не находит, хотя строки есть, делаю это без Prepare Statement:
$pdo->prepare(' SELECT ... LIKE '%text%'..);
все находит.

В чем суть - Как подготовить правильно выражение для LIKE SQL ?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
iNickolay
@iNickolay
Это особенность подготовленных выражений. Должно быть так:
prepare...('SELECT * FROM table WHERE field LIKE :like ...');
$bind['like'] = '%' . $myVar . '%';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
С PostGRE плотно не работал, но по опыту работы с другими СУБД как-то так должно получиться:
field LIKE '%'+:like+'%'
Смысл в том, что переданные в Prepare Statement значения - это переменные в SQL запросе, вот и работайте с ними как с переменными, а не как с константами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы