Новый объект Mysqli нулевой - PullRequest
7 голосов
/ 16 февраля 2012

Я пытаюсь создать соединение с базой данных MySQL, используя Mysqli в PHP.Когда я выполняю следующий код на отдельной странице:

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

$link = new mysqli('localhost', 'myuser', 'mypass', 'dbname');
var_dump($link);

Все, что я получаю, это пустой объект Mysqli, где все свойства равны нулю.Нет ошибок или что-либо отображается.

Я также не вижу записей в журналах Apache или MySQL.Я немного растерялся.

Ответы [ 2 ]

9 голосов
/ 03 мая 2012

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

Я знаю, что это немного устарело, но для тех, у кого все еще есть такая проблема, комментарий от user3158900 к посту danperron имеет решение.Я публикую здесь, чтобы сделать его более заметным.Также приведен пример кода:

<code>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 ). "
";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...