Mysqli:__ construct()返回NULL

时间:2011-04-07 19:06:16

标签: php mysql mysqli

所以我设置了一个数据库,我正在使用一个类来连接它,扩展了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。那么什么可能的情况会返回假?

3 个答案:

答案 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)

@Michael对拼写问题的看法很正确,但这里还有另一个问题:

为什么不使用PDO?默认情况下,PDO安装在PHP 5.1及更高版本上。

PDO抽象数据库层,以便您可以针对任何支持PDO的数据库编写代码,而无需进行重大更改。