Intereting Posts
предоставленный аргумент не является допустимым ресурсом результата MySQL Какой самый безопасный метод хеширования? (PHP) Как это называется, когда вы можете заполнить строку с помощью <<< и end-delimiter? Реверсирование эффекта `mysqli_real_escape_string` Получение улицы, города и страны путем обратного геокодирования с помощью Google Как ограничить PHP-приложения своими собственными каталогами и их собственным php.ini? разница между выполнением curl_close () один или несколько раз? PHP array_walk_recursive () для объектов SimpleXML? Как я могу получить доступ к глубокому объекту, названному как переменная (точечная нотация) в php? Агент пользователя, извлечение ОС и браузера из строки Zend Framework – последний код для выполнения перед компоновкой Как подсчитать файлы в каталоге с помощью jQuery? Не удалось выполнить загрузку файлов в PHP Примечание. Неопределенный индекс: HTTP_REFERER PHP PCNTL – что делает параметр pcntl_signal () restart_syscalls?

Новый объект Mysqli – Null

Я пытаюсь создать соединение с базой данных 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. Я как бы потерял это.

Solutions Collecting From Web of "Новый объект Mysqli – Null"

У меня тоже была эта проблема, и я с ума сходил, пытаясь ее отладить. Оказывается, иногда по какой-то причине объект 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>";