在类中获取数据库连接错误


Get a database connection error in a class

我没有意识到有一种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;
    }
}

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

这是否使使用mysqli的OO方式变得不必要地复杂?还是我错过了一些简单的东西,让我可以继续使用我已经拥有的代码?提前感谢您抽出时间。

if不是变量

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

编辑:

你的连接应该是

    $myDB = new mysqli("localhost", "user", "password", "database");

也许您忘记了"connect"方法中的return true语句?

你也应该使用PDO。

您的connect()函数在失败时返回false,而在成功时不返回任何内容,因此它将始终使if失败。尝试在该函数的末尾添加return true;