Использование именованных параметров с PDO для LIKE

Я пытаюсь найти поле name в своей базе данных, используя LIKE . Если я создаю SQL «вручную» следующим образом:

 $query = "SELECT * \n" . "FROM `help_article` \n" . "WHERE `name` LIKE '%how%'\n" . ""; $sql = $db->prepare($query); $sql->setFetchMode(PDO::FETCH_ASSOC); $sql->execute(); 

Затем он вернет соответствующие результаты для «как».
Однако, когда я превращаю его в подготовленное заявление:

  • PHP: отправлять почту в localhost
  • sudo в php exec ()
  • Использует ли PDO по умолчанию эмулированные подготовленные заявления?
  • php split в массивы меньшего размера
  • Установка Magento жалуется на отсутствие InnoDB, когда он доступен
  • Базовый PHP API-интерфейс Vimeo Advanced API
  •  $query = "SELECT * \n" . "FROM `help_article` \n" . "WHERE `name` LIKE '%:term%'\n" . ""; $sql->execute(array(":term" => $_GET["search"])); $sql->setFetchMode(PDO::FETCH_ASSOC); $sql->execute(); 

    Я всегда получаю нулевые результаты.

    Что я делаю не так? Я использую подготовленные заявления в других местах моего кода, и они работают нормально.

  • Альтернативные альтернативы lookback для альтернативных регулярных выражений
  • ALTER TABLE в скрипте настройки Magento без использования SQL
  • Что называется «->» PHP-оператором и как вы это говорите при чтении кода вслух?
  • Как вставить константу PHP в SQL-запрос?
  • Сравнение двух дат
  • Sendmail Wamp Php
  • One Solution collect form web for “Использование именованных параметров с PDO для LIKE”

    Связанные :placeholders не должны быть заключены в одинарные кавычки. Таким образом, они не будут интерпретироваться, но рассматриваются как необработанные строки.

    Если вы хотите использовать его как шаблон LIKE , передайте % вместе со значением:

     $query = "SELECT * FROM `help_article` WHERE `name` LIKE :term "; $sql->execute(array(":term" => "%" . $_GET["search"] . "%")); 

    О, и на самом деле вам нужно сначала очистить входную строку (addcslashes). Если пользователь поставляет какие-либо посторонние символы % в этом параметре, они становятся частью шаблона соответствия LIKE. Помните, что весь параметр :term передается как строковое значение, и все % s внутри этой строки становятся заполнителями для предложения LIKE.

    PHP is the Best Programming Language in the world.