Я пытаюсь создать соединение с базой данных MySQL, используя Mysqli в PHP. Когда я выполняю следующий код на отдельной странице:
<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $link = new mysqli('localhost', 'myuser', 'mypass', 'dbname'); var_dump($link);
Все, что я получаю, это пустой объект Mysqli, где все свойства имеют значение null. Никакая ошибка или что-либо не отображается.
Я также не вижу записей в журналах Apache или MySQL. Я как бы потерял это.
У меня тоже была эта проблема, и я с ума сходил, пытаясь ее отладить. Оказывается, иногда по какой-то причине объект mysqli не заполняется, но прямой доступ к его свойствам по-прежнему выполняет собственный код. Поэтому, несмотря на то, что var_dump всего объекта mysqli показывает нулевые свойства, они существуют, если вы обращаетесь к ним по отдельности. Если errorno окажется ложным, возможно, вы выполнили корректный запрос с пустым набором результатов, которого вы не ожидали. Надеюсь это поможет.
$mysqli = mysqli_connect('localhost', 'root', '', 'test', 3306); var_dump($mysqli); var_dump($mysqli->client_info); var_dump($mysqli->client_version); var_dump($mysqli->info);
и выход:
object(mysqli)[1] public 'affected_rows' => null public 'client_info' => null public 'client_version' => null public 'connect_errno' => null public 'connect_error' => null public 'errno' => null public 'error' => null public 'field_count' => null public 'host_info' => null public 'info' => null public 'insert_id' => null public 'server_info' => null public 'server_version' => null public 'stat' => null public 'sqlstate' => null public 'protocol_version' => null public 'thread_id' => null public 'warning_count' => null string 'mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $' (length=50) int 50008 null int 0 string 'localhost via TCP/IP' (length=20) string '5.5.20-log' (length=10) int 50520
Я знаю, что это немного устарело, но для тех, кто все еще имеет это как повторяющуюся проблему, комментарий от user3158900 к сообщению danperron имеет решение. Я переписываю здесь, чтобы сделать его более заметным. Также приведен пример кода примера:
global $mysqli; //assuming you've already created your $mysqli object $mysqli->query("INSERT INTO users SET username='jim' and password='somehash'"); var_dump( $mysqli ); //prints the full object but all the values are null //the following code prints the full object with appropriate values such as //insert_id, affected_rows, etc //view http://pastebin.com/Mgd2CZsM for an example of this output echo "<pre>" . print_r( $mysqli, true ). "</pre>";