【问题标题】:Connecting To Database using sqli or PDO in class在课堂上使用 mysqli 或 PDO 连接到数据库
【发布时间】:2017-12-19 16:56:15
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您将一个名为$link 的变量传递给mysqli_query(),但没有在任何地方设置它...
  • 我猜$result = mysqli_query($link,$query); 应该是$result = mysqli_query($this->link,$query);
  • 很高兴看到有人意识到它的贬值并且没有完全忽视这一事实。
  • @AlexK。它肯定会在 SO 上做出令人耳目一新的变化
  • 非常感谢你们。它正在工作。

标签: php mysql sql mysqli pdo


【解决方案1】:

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

在您的DBquery() 方法中,您将一个名为$link 的局部变量传递给尚未设置的mysqli_query()(因此它告诉您它是null)。相反,您需要传入您的类变量。

同样,您需要将 $link 的相同类实例变量传递给您没有执行的 mysqli_error()

您的DBquery() 方法的更新代码应更新如下:

public function query($query) {
    $result = mysqli_query($this->link, $query);
    if (!$result) die('Invalid query: ' . mysqli_error($this->link));
    return $result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多