我使用mysql这个类,但意识到它已经被弃用了。我试图让它使用PDO或mysqli工作,但我并不是100%确定如何使它工作。
class DB {
private $link;
private $host, $username, $password, $database;
public function __construct($host, $username, $password, $database){
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->link = mysqli_connect($this->host, $this->username, $this->password)
OR die("There was a problem connecting to the database.");
mysqli_select_db( $this->link,$this->database)
OR die("There was a problem selecting the database.");
return true;
}
public function query($query) {
$result = mysqli_query($link,$query);
if (!$result) die('Invalid query: ' . mysqli_error());
return $result;
}
public function __destruct() {
mysqli_close($this->link)
OR die("There was a problem disconnecting from the database.");
}
public function gettingDepartments(){
$db = new DB("localhost", "root", "", "visitorform");
$result = $db->query("SELECT * FROM tb_user_dept");
return $result;
}
}
这是我得到的错误:
警告:mysqli_query()期望参数1为mysqli,null给定。 mysqli_error()只需要1个参数,给定
答案 0 :(得分:0)
根据您的错误消息,您没有将有效参数传递给mysqli_query()
,也没有传递给mysqli_error()
。
在DB
类query()
方法中,您将一个名为$link
的局部变量传递给mysqli_query()
,该变量尚未设置(因此它告诉您它是null
)。相反,您需要传入类变量。
同样,您需要将$link
的同一个类实例变量传递给mysqli_error(),而不是您要做的。
您的DB
课程query()
方法的更新代码应更新如下:
public function query($query) {
$result = mysqli_query($this->link, $query);
if (!$result) die('Invalid query: ' . mysqli_error($this->link));
return $result;
}