2

我没有意识到有一种 OO 方式来使用 mysqli,所以我构建了一个名为 DB 的类。在 __construct 期间,它需要主机名、用户名、密码和数据库名称。给定以下代码:

$myDB = new DB("localhost", "user", "password", "database");
$myDBConnect = $myDB->connect();

if(!$myDBConnect) {
    echo "<strong>The following error has occurred: " . $myDB->getError();
}

该变量显然包含FALSE,因为该if语句当前正在返回TRUE。这是来自 DB 类的方法:

public function connect() {
    // Create connection
    $this->dbConnx = mysqli_connect($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);

    if(mysqli_connect_errno($this->dbConnx)) {
        $this->dbError = mysqli_error($this->dbConnx);
        return false;
    }
}

我没有收到任何错误详细信息。我尝试添加or die(mysqli_error());connect 方法,但它始终只输出 $myDB 实例化的文件中的文本。我还尝试了错误报告代码的变体,包括没有参数mysqli_connect_errno()以及使用$this->dbError = mysqli_connect_error()和不使用连接参数。

这是否会使使用 mysqli 的 OO 方式不必要地复杂化?还是我错过了一些简单的东西,可以让我继续使用我已经得到的代码?在此先感谢您的时间。

4

3 回答 3

2

if 不可变

       if(!$myDBConnect) {
      ^--remove variable sign here

编辑:

你的连接应该是

    $myDB = new mysqli("localhost", "user", "password", "database");
于 2013-08-06T19:59:43.567 回答
1

您的connect()函数false在失败时返回,而在成功时没有返回,所以它总是会失败if. 尝试return true;在该函数的末尾添加。

于 2013-08-06T22:17:46.563 回答
1

也许你忘记了“connect”方法中的 return true 语句?

你也应该使用 PDO。

于 2013-08-06T20:03:03.413 回答