我花了将近一天的时间来找出与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方法显示错误结果。请帮忙
答案 0 :(得分:0)
mysqli_connect
是mysqli
类构造函数的别名,因此$this->dbh
不是资源,而是对象。适当的测试将使用is_object
或instanceof 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
}