Я ищу способ проверить только часть соединения соединения php / mysqli. Я переношу с сервера LAMP на Vista на то же самое на Ubuntu, и мне пригодится работа mysqli. Я знаю, что все соответствующие модули установлены, а PhpMyAdmin работает безупречно. Я переместил сайт, и ни одно из подключений mysqli не работает. Ошибка, которую я получаю, это «вызов функции-члена xxx () для не-объекта», которая обычно появляется, когда либо сам запрос плохой, либо запрос подготовлен из плохого соединения. Я знаю, что сам запрос хорош, потому что он отлично работает на другом сервере с той же структурой и данными базы данных. Это оставляет мне связь. Я попытался написать очень простое тестовое соединение и поместить его в цикл, такой как ..
if(***connection here ***) { echo "connected"; } else { echo "not connected"; }
Это отголоски «связаны», что здорово. Но просто чтобы проверить, что я сменил пароль в соединении, чтобы я знал, что он не сможет подключиться, и он все еще эхом отозвался «подключен». Таким образом, тест if / else явно не подходит.
mysqli_connect () всегда возвращает объект MySQLi. Чтобы проверить наличие ошибок подключения, используйте:
$mysqli_connection = new MySQLi('localhost', 'user', 'pass', 'db'); if ($mysqli_connection->connect_error) { echo "Not connected, error: " . $mysqli_connection->connect_error; } else { echo "Connected."; }
Тогда вам нужно больше обработки ошибок при различных вызовах базы данных. Быстрый / грязный метод – просто сделать
$whatever = mysqli_somefunction(...) or die("MySQL error: ". mysqli_error());
Все функции возвращают boolean FALSE, если произошла ошибка, или соответствующий объект mysqli с результатами. Без проверки ошибок вы будете делать:
$result = $mysqli->query("blah blah will cause a syntax error"); $data = $result->fetchRow(); // $result is "FALSE", not a mysqli_object, hence the "call to member on non-object"