我没有意识到有一种使用mysqli的OO方式,所以我构建了一个名为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方式不必要地变得复杂?或者我错过了一些简单的东西,这将允许我继续使用我已经获得的代码? 提前感谢您的时间。
答案 0 :(得分:2)
如果不是变量
if(!$myDBConnect) {
^--remove variable sign here
编辑:
您的连接应该是
$myDB = new mysqli("localhost", "user", "password", "database");
答案 1 :(得分:1)
也许你忘记了“connect”方法中的return true语句?
另外你应该使用PDO。
答案 2 :(得分:1)
您的connect()
函数在失败时返回false
并且没有成功,因此if
将始终失败。尝试在该功能的末尾添加return true;
。