我正在将代码mysql更新为mysqli,现在我陷入了is_resource方法

时间:2014-06-18 23:41:34

标签: php

我花了将近一天的时间来找出与is_resource方法相关的错误,这里是我的代码

function __construct() {
    $this->dbHost = "localhost";
    $this->dbUser = "root";
    $this->dbPass = "";
    $this->dbName = "tahseent_digitemb";
}
public function connect() {
    $this->dbh = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass)
   ;6     or die("Could not connect to the database:<br />" . mysqli_error($this->dbh));
    mysqli_select_db($this->dbh, $this->dbName) 
        or die("Database error:<br />" . mysqli_error($this->dbh));
        if(!is_resource($this->dbh)) {
        trigger_error("Unable to Connect to the Database Server: ".$this->dbHost, E_USER_ERROR);
        //die("Error:: Unable to Connect to the Database Server.");
    }
    if(!mysqli_select_db($this->dbh, $this->dbname)) {
        trigger_error("Unable to Select Database:: ".$this->dbname, E_USER_ERROR);
        //die("Error:: Unable to Select Database"); 
    }

我正在成功连接到我的数据库因为我的连接没有死但我可以 理解为什么is_resource方法显示错误结果。请帮忙

2 个答案:

答案 0 :(得分:0)

mysqli_connectmysqli类构造函数的别名,因此$this->dbh不是资源,而是对象。适当的测试将使用is_objectinstanceof mysqli

那就是说,没有必要进行测试。您的初始or die测试已经发现任何错误。

答案 1 :(得分:0)

MySQLI不使用资源,它使用对象。 mysqli_connect返回类mysqli的对象,mysql_prepare返回类mysqli_stmt的对象,mysqli_query在执行时返回类mysqli_result的对象SELECT查询。

如果失败,所有这些函数都会返回false。而不是测试返回的值是否是资源,只需测试它是否真的:

$this->dbh = mysqli_connect(...);
if ($this->dbh) {
    // successfull
} else {
    // report error
}