PHP Предупреждение: mysqli_stmt :: bind_param (): Число переменных не соответствует количеству параметров в подготовленном сообщении

Не знаю, почему я получаю это сообщение для предупреждения PHP. По-видимому, в подготовленном операторе есть четыре параметра, а также четыре переменные в bind_param (). Спасибо за любую помощь!

if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) { $stmt -> bind_param("ssis", $url, $month, $year, $cover_image); $stmt -> execute(); $stmt -> bind_result($url, $month, $year, $cover_image); $stmt -> fetch(); while ($stmt->fetch()) { echo "<li class='item'><a href='$url'><img src='$cover_image' alt='$cover_image' width='' height='' /></a><br /><span class='monthIssue'>$month $year</span></li>"; } $stmt -> close(); $mysqli -> close(); } 

Related of "PHP Предупреждение: mysqli_stmt :: bind_param (): Число переменных не соответствует количеству параметров в подготовленном сообщении"

 if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) { $stmt -> bind_param("ssis", $url, $month, $year, $cover_image); [...] } 

эти строки не имеют никакого смысла! Если вы хотите использовать параметры, вы должны использовать их в каком-либо условии или аналогичном, что очень похоже на:

 $mysqli->prepare("SELECT * FROM back_issues WHERE url =? AND month =? AND year =? and cover_image = ?"); $stmt->bind_param("ssis", $url, $month, $year, $cover_image); 

Если у вас нет bind_param() с bind_param() к параметрам, bind_param() приведет к ошибке, с которой вы работаете. Более того, что должен делать этот оператор IF? Если вы хотите проверить, вызвал ли этот запрос какой-либо результат, вы должны его запустить, а затем проверить.

В этом случае вам не нужно связывать параметры. Заполнители используются для значений в инструкции INSERT или в предложении WHERE. (Обратите внимание, что заполнители не допускаются для идентификаторов, таких как имена столбцов в вашем заявлении.) Допустимый упрощенный оператор с заполнителями будет выглядеть так:

 "SELECT url, cover_image FROM back_issues WHERE month = ? and year = ?"