«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему подготовленный оператор PDO не возвращает результаты с помощью запроса LIKE?

Почему подготовленный оператор PDO не возвращает результаты с помощью запроса LIKE?

Опубликовано 3 ноября 2024 г.
Просматривать:262

Why Does PDO Prepared Statement Fail to Return Results with LIKE Query?

Подготовленный оператор PDO в PHP: проблемы с MySQL LIKE-запросами

Класс PDO PHP с MySQL предлагает механизм выполнения операторов SQL с параметризованными запросами , улучшая безопасность и производительность. Однако пользователи могут столкнуться с трудностями при использовании запросов LIKE.

Проблема: подготовленный оператор PDO не возвращает результаты с помощью запроса LIKE.

При попытке выполнить запрос, аналогичный следующему используя PDO:

SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"

Пользователи могут обнаружить, что результаты не возвращаются.

Решение: правильная параметризация

Проблема заключается в неправильная параметризация поискового запроса. В PHP подготовленные операторы используют именованные заполнители, для которых требуется другой синтаксис. Правильная параметризация запроса LIKE:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

Объяснение:

Подготовленные операторы отделяют данные от запроса и используют заполнители. Поэтому нет необходимости заключать поисковый запрос в двойные кавычки или выполнять конкатенацию строк.

Другие распространенные ошибки:

WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));  // Incorrect
  • Этот подход неверен, так как добавляет ненужные двойные кавычки.
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));  // Incorrect
  • Использование CONCAT для переноса поискового запроса в запрос не является необходимым для параметризации.

Используя правильную параметризацию, вы можете успешно выполнять запросы LIKE, используя PDO подготовил операторы на PHP.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3