Надежда Кто-нибудь поможет мне в том, как я привязываю параметр в mysqli, когда подмножество нескольких символов должно быть рядом с значением переменной. Я обнаружил, что это сработало для меня при создании инструкции SQL, например:
$sql = "SELECT item_title FROM item WHERE item_title LIKE '%$title%'";
Однако я попытался связать переменную с тем же шаблоном и обнаружил, что она не удалась. Они использовали этот код:
$sql = "SELECT item_title FROM item WHERE item_title LIKE '%?%'";
Он поднял эту ошибку:
Предупреждение: mysqli_stmt_bind_param () [function.mysqli-stmt-bind-param]: Число переменных не соответствует количеству параметров в подготовленном выражении в имени_программы в строке ……
Может ли кто-нибудь сказать мне, как исправить эту проблему? Спасибо.
Вы можете связывать только литералы данных, а не произвольные части запроса.
Итак, подготовьте свой буквальный первый
$var = "%$var%"; $sql = "SELECT item_title FROM item WHERE item_title LIKE ?";
Вы можете сделать так:
$sql = "SELECT item_title FROM item WHERE item_title LIKE ? ";
а потом
$title_new = '%'.$title.'%'; mysqli_stmt_bind_param($stmt, 's', $title_new);
Обновлено на основе комментария пользователя
Чтобы реализовать ниже SQL
s2.subject_name LIKE '%$keyword%' OR c.city_name LIKE '%$keyword%'
Использовать ниже заявление MySqli s2.subject_name LIKE? ИЛИ c.city_name LIKE?
$keyword = '%'.$keyword.'%'; mysqli_stmt_bind_param($stmt, 'ss', $keyword, $keyword);
$sql="SELECT item_title FROM item WHERE item_title LIKE concat ('%',?,'%') ";
имеют один знак вопроса для переменной привязки. Например, подготовьте (SELECT item_title FROM item WHERE item_title LIKE? И name2 как? И …). Хорошая вещь о подготовленных операторах заключается в том, что вам не нужно беспокоиться о цитировании переменных.
Затем привяжите все параметры, такие как bind_param («ss …», $ param1, $ param2, ….);