Запрос Mysqli в функции – PHP

У меня есть список функций в functions.php . Я обновляюсь от Mysql до Mysqli, потому что я просто изучаю Mysql , теперь обесценивается.

Я объявляю свое соединение в файле верхнего уровняconnect.php. Требуется первый файл.

В любом случае, все мои функции используют mysql_query («QUERY»), и это всегда срабатывало нормально. Теперь я изменил их все:

$con->query("QUERY") // ($con is my connection variable) 

Теперь я получаю Неустранимая ошибка: вызовите функцию-функцию-член () для не-объекта в C: \ wamp \ www \ PHP \ functions.php в строке 241 .

Поэтому я не понимаю, почему я могу запросить, объявляю ли я свою переменную во всем моем файле. Он должен быть доступен везде, я просто не уверен. Это остановило мой сайт, пока я не смогу это исправить. Вот пример функции function.php

 function getSiteName() { $row = $con->query("SELECT * FROM siteinfo")->fetch_array(); return $row["siteName"]; } 

Моя связь:

 global $con ; $con = new mysqli("localhost", "itunes89", "XXXX","projectanvil") or die("Sorry, were having server connection issues. Please try again later."); 

Спасибо, парни! : D Мой сайт, где у меня такая ошибка

Solutions Collecting From Web of "Запрос Mysqli в функции – PHP"

Это проблема с переменной областью . Вам нужно передать $conn getSiteName() для getSiteName() :

 function getSiteName($con) { $row = $con->query("SELECT * FROM siteinfo")->fetch_array(); return $row["siteName"]; } $name = getSiteName($con); 

Или с помощью класса с инъекцией конструктора:

 class MyThing { protected $con; public function __construct($con) { $this->con = $con; } public function getSiteName() { $row = $this->con->query("SELECT * FROM siteinfo")->fetch_array(); return $row["siteName"]; } } $obj = new MyThing($con); $name = $obj->getSiteName(); 

Во всем классе вы можете использовать $this->con для доступа к соединению.

  $con = new mysqli( "localhost", "itunes89", "XXXX", "projectanvil" ); 

Не будет возвращен null или false при ошибке.

Вы должны проверить значение

  mysqli_connect_errno() 

После подключения проверить, что $ con является действительным подключением к серверу.

Поскольку вы создали $ con global, чтобы получить доступ к функции getSiteName, вы должны написать:

  function getSiteName(){ global $con; $row = $con->query("SELECT * FROM siteinfo")->fetch_array(); return $row["siteName"]; } 

Вы отказываетесь от объекта $ con

 <?php // connect to the server $conn = new mysqli('localhost', 'root', 'pass', 'dbname'); // check connection if (mysqli_connect_errno()) { exit('Connect failed: '. mysqli_connect_error()); } ?>