新的Mysqli对象是空的

时间:2012-02-15 22:15:39

标签: php mysql mysqli

我正在尝试使用PHP中的Mysqli创建与MySQL数据库的连接。当我在独立页面上执行以下代码时:

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

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

我输出的是一个空的Mysqli对象,其中所有属性都为null。没有错误或任何东西被显示。

我也没有在Apache或MySQL日志中看到任何条目。我很沮丧。

2 个答案:

答案 0 :(得分:9)

我也有这个问题,并且试图调试它疯了。事实证明,有时无论出于何种原因,mysqli对象都没有被填充,但是直接访问它的属性仍然会执行它背后的本机代码。因此,即使整个mysqli对象的var_dump显示空属性,如果您单独访问它们,它们也在那里。如果errorno结果为false,那么您可能已经执行了一个您没有期望的空结果集的有效查询。希望这会有所帮助。

$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

答案 1 :(得分:2)

我知道这有点旧,但对于那些仍然将此作为反复出现问题的人来说,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>";