Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用类实现mysqli过程_Php_Mysqli - Fatal编程技术网

Php 用类实现mysqli过程

Php 用类实现mysqli过程,php,mysqli,Php,Mysqli,因此,最近我一直在尝试使用程序性更强的mysqli进行练习,并一直在研究w3schools作为参考,但我仍然有困难,所以我想我应该问一下 我有一个database.php文件,里面有很多东西,但重要的是 class Database{ public $host = DB_HOST; public $username = DB_USER; public $password = DB_PASS; public $db_name = DB_NAME; publ

因此,最近我一直在尝试使用程序性更强的mysqli进行练习,并一直在研究w3schools作为参考,但我仍然有困难,所以我想我应该问一下

我有一个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\u查询($link,$query)
,但是
link
在这里和类内部是公共的,所以我不能这样做,另外我想访问函数
select
。谢谢

$link
未在函数
选择中定义

修改您的
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);
    }
}
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;
    }
}
现在,$this->link可用于
select
功能:

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);
    }
}
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;
    }
}

我建议您阅读(至少前几章)以便更好地理解。

$link
未在您的函数
选择中定义

修改您的
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);
    }
}
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;
    }
}
现在,$this->link可用于
select
功能:

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);
    }
}
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;
    }
}

我建议您阅读(至少前几章)以便更好地理解。

@Saty给出了“在不在对象上下文中时使用$this错误”如果您想要函数,为什么会有类?我只是认为将类和一些函数放在其中是组织代码的更好方法。这是我第一次在课堂上组织一切。以前它只是做一些事情,比如选择,插入,在飞行中,但这似乎是Neater,我仍然不明白你的意图和问题。如果您想使用类,那么请坚持使用类。如果你想使用一个函数,那么就放弃一个类,转而使用一个函数;可以转换成$posts=mysqli_query(这里的某物)@Saty的形式,给出了“当不在对象上下文中时使用$this错误”如果你想要一个函数,为什么会有一个类?我只是认为在里面放一个类和一些函数会是组织代码的更好方法。这是我第一次在课堂上组织一切。以前它只是做一些事情,比如选择,插入,在飞行中,但这似乎是Neater,我仍然不明白你的意图和问题。如果您想使用类,那么请坚持使用类。如果你想使用一个函数,那么就放弃一个类,转而使用一个函数;可以转换成$posts=mysqli_query(这里的某个东西)的形式。嗯,我之前实际上是在玩弄这个,并且做了同样的事情,但是当我执行“$posts=mysqli_query($this->link,$query);”
$this
只能在类中使用时,我得到了错误“在不在对象上下文中使用$this”。为什么要调用mysqli_查询而不是
select
函数?噢。那么,我应该只做$posts=(在这里调用函数)?
$posts=$db->select(您在这里的查询)
您不必担心链接值,它存储在
$db
中,当您调用
选择
函数时会自动使用。这是因为我一开始说的是public$link吗?我想我需要再次学习php中的类和OOP,已经有一段时间了..嗯,其实我之前也在玩弄它,并且做了同样的事情,但是当我执行“$posts=mysqli_query($this->link,$query);”
$this
只能在类中使用时,我得到了错误“在不在对象上下文中使用$this”。为什么要调用mysqli_查询而不是
select
函数?噢。那么,我应该只做$posts=(在这里调用函数)?
$posts=$db->select(您在这里的查询)
您不必担心链接值,它存储在
$db
中,当您调用
选择
函数时会自动使用。这是因为我一开始说的是public$link吗?我想我需要再次学习php中的类和OOP,已经有一段时间了。。