我正在尝试使用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日志中看到任何条目。我很沮丧。
答案 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>";