Первое правило состоит в том, что длина имени переменной должна соответствовать объему переменной. Второе правило состоит в том, что понятные имена делают ошибки более мелкими. Третье правило состоит в том, что, если Вы испытываете желание добавлять комментарий к имени переменной, Вы выбрали неправильное имя переменной. Заключительное правило, делают, как Ваши товарищи по команде делают, пока оно не противодействует предшествующим правилам.
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));
Это неверно. Вам не нужны двойные кавычки.
WHERE hs.hs_text LIKE ":searchTerm"
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Это тоже неправильно. Попробуйте:
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Explanation: Подготовленные операторы не просто заменяют строку. Они передают данные полностью отдельно от запроса. Кавычки нужны только при встраивании значений в запрос.
Ну, вот эту я решил. И, честно говоря, я идиот ... Спасибо всем, что видели это и дали хороший отзыв. Проблема заключалась в опечатке в имени таблицы (которое я изменил, поэтому никто здесь не сможет увидеть мою проблему с самого начала ...). Однако эти предложения привели меня к обнаружению проблемы, поэтому спасибо, adam, jkndrkn и troelskn.
Для протокола, следующая комбинация работает хорошо:
WHERE aw_hcl_subdevices.hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));