Предупреждение: mysqli_query () ожидает, что параметр 1 будет mysqli, null указан в

Я пытаюсь создать простой пользовательский CMS, но я получаю сообщение об ошибке:

Предупреждение: mysqli_query () ожидает, что параметр 1 будет MySQLi, null указан в

Почему я получаю эту ошибку? Весь мой код уже MySQLi, и я использую два параметра, а не один.

$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx"); //check connection if (mysqli_connect_errno($con)) { echo "Failed to connect to MySQL:" . mysqli_connect_error(); } function getPosts() { $query = mysqli_query($con,"SELECT * FROM Blog"); while($row = mysqli_fetch_array($query)) { echo "<div class=\"blogsnippet\">"; echo "<h4>" . $row['Title'] . "</h4>" . $row['SubHeading']; echo "</div>"; } } 

Как уже упоминалось в комментариях, это вопрос, охватывающий вопросы. В частности, $con не входит в объем вашей функции getPosts .

Вы должны передать объект подключения в качестве зависимости, например

 function getPosts(mysqli $con) { // etc 

Я также очень рекомендую прекратить выполнение, если ваше соединение завершится с ошибкой. Что-то вроде этого должно быть достаточно

 $con=mysqli_connect("localhost","xxxx","xxxx","xxxxx"); if (mysqli_connect_errno()) { throw new Exception(mysqli_connect_error(), mysqli_connect_errno()); } getPosts($con); 

используйте глобальную область действия на вашем $ con и поместите ее внутри вашей функции getPosts (), как это.

 function getPosts() { global $con; $query = mysqli_query($con,"SELECT * FROM Blog"); while($row = mysqli_fetch_array($query)) { echo "<div class=\"blogsnippet\">"; echo "<h4>" . $row['Title'] . "</h4>" . $row['SubHeading']; echo "</div>"; } } 

Функция getPosts() кажется, ожидает, что $con будет глобальным, но вы не объявляете его как таковой.

Многие программисты рассматривают лысые глобальные переменные как «запах кода». Альтернатива на другом конце шкалы – это всегда передавать ресурс соединения. Промежуток между ними – это однопользовательский вызов, который всегда возвращает один и тот же дескриптор ресурса.

Рекомендовать использовать global $con; в функциональном корпусе.