我试图在php中使用mysql i创建到mysql数据库的连接。当我在独立页面上执行以下代码时:

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

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

我得到的输出是一个空的mysqli对象,其中所有属性都为空。不会显示错误或任何内容。
我在apache或mysql日志中也看不到任何条目。我有点迷路了。

最佳答案

我也遇到了这个问题,想去调试它,我都快疯了。事实证明,有时无论出于什么原因,mysqli对象都不会被填充,但直接访问其属性仍然会执行其背后的本机代码。因此,即使整个mysqli对象的var_转储显示空属性,如果您单独访问它们,它们仍然存在。如果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

08-19 20:50