在课堂上使用sqli或PDO连接到数据库

时间:2017-07-14 14:32:15

标签: php mysql sql mysqli pdo

我使用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个参数,给定

1 个答案:

答案 0 :(得分:0)

根据您的错误消息,您没有将有效参数传递给mysqli_query(),也没有传递给mysqli_error()

DBquery()方法中,您将一个名为$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;
}