Не знаю, почему я получаю это сообщение для предупреждения 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(); }
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 = ?"