如何检测MySQLi初始化错误


How to detect MySQLi initialization error

在我的网站上,我正在使用从配置文件中读取的值初始化DB连接,如下所示:

$this->mysqli = new mysqli($databaseInfo->MySQL_Host, $databaseInfo->MySQL_User, $databaseInfo->MySQL_Pass, $databaseInfo->MySQL_Db);

(记录在案,正确地从文件中读取值,当一切正常时,数据库连接工作正常)

然后我问在创建MySQLi对象时是否发生了错误:

if (($this->mysqli!=null)&&($this->mysqli->errno == 0)) {

如果没有,那么我想设置一个错误变量,并在稍后的代码中处理它。。。我希望这张支票只有在没有问题的情况下才能通过。。。我认为"errno"变量提供了足够的检查。。。

但显然不是,因为不管有什么错误,我都会在配置文件中生成,代码仍然会跳到"一切都很好"分支。。。很明显,PHP会产生很多警告,最后它会因一些致命错误而崩溃,这些错误与数据库不能按预期工作有关

所以我的问题是——如何正确设置这个DB连接的初始检查来避免这种情况?

从PHP手册中,试试这个:

if (!$mysqli->error) {
   printf("Errormessage: %s'n", $mysqli->error);
}

如果使用PHP OOP

  if ($mysqli->connect_error) {
  die('Connect Error: ' . $mysqli->connect_error);
  }
  ?>

如果使用过程式PHP

 if (!$link) {
  die('Connect Error: ' . mysqli_connect_error());
  }
  ?>