PHP PDO подготовил оператор — MySQL КАК запрос

Первое правило состоит в том, что длина имени переменной должна соответствовать объему переменной. Второе правило состоит в том, что понятные имена делают ошибки более мелкими. Третье правило состоит в том, что, если Вы испытываете желание добавлять комментарий к имени переменной, Вы выбрали неправильное имя переменной. Заключительное правило, делают, как Ваши товарищи по команде делают, пока оно не противодействует предшествующим правилам.

40
задан ROMANIA_engineer 1 December 2017 в 14:32
поделиться

2 ответа

$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: Подготовленные операторы не просто заменяют строку. Они передают данные полностью отдельно от запроса. Кавычки нужны только при встраивании значений в запрос.

94
ответ дан 27 November 2019 в 01:26
поделиться

Ну, вот эту я решил. И, честно говоря, я идиот ... Спасибо всем, что видели это и дали хороший отзыв. Проблема заключалась в опечатке в имени таблицы (которое я изменил, поэтому никто здесь не сможет увидеть мою проблему с самого начала ...). Однако эти предложения привели меня к обнаружению проблемы, поэтому спасибо, adam, jkndrkn и troelskn.

Для протокола, следующая комбинация работает хорошо:

WHERE aw_hcl_subdevices.hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));
-4
ответ дан 27 November 2019 в 01:26
поделиться
Другие вопросы по тегам:

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