所以我设置了一个数据库,我正在使用一个类来连接它,扩展了Mysqli。以下是相关的代码行:
class Db extends Mysqli {
public $result = Array();
function __construct() {
parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_DB);
}
我已经检查了连接信息,它与mysql_connect()
函数配合使用。
我的PHP版本是5.3,我正在使用MAMP 1.9.5来运行环境。
关于我遇到的问题 - 如果我var_dump()
连接,则返回NULL。不是假的,但是空的。现在我检查了规范,就像它的前身mysql_connect()
一样,它应该在连接失败的情况下返回false。那么什么可能的情况会返回假?
答案 0 :(得分:2)
您没有显示完整的代码。这就是你所做的:
class Db extends Mysqli {
function __construct() {
$r = parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_DB);
var_dump($r);
}
}
当然,这会返回NULL
。父构造函数永远不会返回任何内容。建构者不应该返回任何东西。它们填满了新创建的对象实例。
您将在返回的对象中找到连接句柄和其他属性, 构造函数完成后。
答案 1 :(得分:0)
我猜这是因为你的资本化。扩展不存在的类Mysqli
,并且其不存在的方法connect()
似乎返回NULL
class Db extends Mysqli
应该是
class Db extends mysqli
答案 2 :(得分:0)
为什么不使用PDO
?默认情况下,PDO
安装在PHP 5.1及更高版本上。
PDO
抽象数据库层,以便您可以针对任何支持PDO的数据库编写代码,而无需进行重大更改。