У меня есть список функций в 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 Мой сайт, где у меня такая ошибка
Это проблема с переменной областью . Вам нужно передать $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()); } ?>