Как можно исправить ошибку "mysqli_stmt::bind_param(): Количество переменных не соответствует количеству параметров в подготовленном выражении"?

  • 1 сентября 2023 г. 6:16
Ответы на вопрос 3
Ошибка "mysqli_stmt::bind_param(): Количество переменных не соответствует количеству параметров в подготовленном выражении" возникает, потому что вы используете знак вопроса внутри одинарных кавычек в вашем подготовленном выражении. Знак вопроса должен быть размещен непосредственно в выражении SQL, без кавычек.

Вместо этого, вы можете изменить свое выражение SQL следующим образом:

$sql = $conn->prepare("SELECT * FROM post_comment WHERE body LIKE ?");
$inputSearch = '%'.$inputSearch.'%';
$sql->bind_param("s", $inputSearch);
$sql->execute();
$result = $sql->get_result();
$itog = mysqli_fetch_assoc($result);

Здесь знак вопроса будет подставлен вместе с символами % в переменную $inputSearch еще до выполнения bind_param(). Это позволит работать с подготовленным выражением без ошибки.
$sql = $conn->prepare("select * from post_comment where body like CONCAT('%', ?, '%')"); 
 Плейсхолдером можно подставить только параметр, вы же пытаетесь использовать его как подстановку содержимого строки.
Похожие вопросы