用类实现mysqli过程

时间:2016-07-05 12:36:56

标签: php mysqli

所以最近我一直在尝试使用更多程序性的mysqli进行练习,并一直在寻找http://www.phpknowhow.com/mysql/mysqli-procedural-functions/,以及w3schools作为参考,但我仍然遇到麻烦,所以我想我和我#39;请问。

我有这个database.php文件,其中有很多东西,但重要的东西是

class Database{
    public $host = DB_HOST;
    public $username = DB_USER;
    public $password = DB_PASS;
    public $db_name = DB_NAME;

    public $link; 
    public $error;

   public function __construct(){

       $this -> connect();
   }

    private function connect(){

       $link = mysqli_connect($this->host,$this->username,$this->password,$this->db_name);
        if(!$link){
            echo "Failed".mysqli_error($link);
        }
    }



    // create select method

    public function select($query){
        $result = mysqli_query($link,$query) or die("didnt work".mysqli_error($link));
        if(mysqli_num_rows($result) > 0){
            return $result;
        }
        else{
            return false;
        }
    }

现在,我的index.php文件中的当前工作方式很简单,只需执行类似

的操作
$db = new Database();

//CREATe query
$query = "SELECT * FROM posts";
$posts = $db->select($query);

有没有办法用程序函数实现$posts = $db->select($query)?在我完成mysqli_query($link,$query)之类的内容之前,link在这里和课堂内都是公开的,所以我不能这样做,而且我想访问函数select。谢谢!

1 个答案:

答案 0 :(得分:2)

您的函数$link中未定义

select

修改您的connect功能:

private function connect() {
    $this->link = mysqli_connect($this->host, $this->username, $this->password, $this->db_name);
    if(!$this->link) {
        echo "Failed: " . mysqli_error($this->link);
    }
}

现在,您可以在select功能中使用$ this->链接:

public function select($query){
    $result = mysqli_query($this->link, $query) or die("didn't work: "  .mysqli_error($this->link));
    if(mysqli_num_rows($result) > 0) {
        return $result;
    }
    else{
        return false;
    }
}

我建议你阅读PHP OOP documenentation(至少在前几章)以便更好地理解。