在OO php mysqli选择方法中访问$ dbConnect的问题



我正在尝试创建一个OO PHP数据库类,但是正在遇到问题,如何将我的$ dbConnect变量传递到'select'方法中。这是我的代码:

class Database {
private $db_host = "host";
private $db_user = "user";
private $db_pass = "password";
private $db_name = "dbname";
private $result = array();
private $myQuery = "";
private $numResults = "";
public function connect() {
    $dbconnect = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
    if(mysqli_connect_errno()) {
        array_push($this->result, mysqli_connect_error());
        return false;
    } else {
        $this->con = true;
        return true;
    }
}
public function select($table, $rows = '*', $join = null, $where = null, $order = null, $limit = null) {
    $sql = 'SELECT '.$rows;
    if($table) {
        $sql .= ' FROM '.$table;
    }
    if($join != null) {
        $sql .= ' JOIN '.$join;
    }
    if($where != null) {
        $sql .= ' WHERE '.$where;
    }
    if($order != null) {
        $sql .= ' ORDER BY '.$order;
    }
    if($limit != null) {
        $sql .= ' LIMIT '.$limit;
    }
    $query = $dbconnect->query($sql);
    $this->myQuery = $sql;
    if($query->num_rows > 0) {
        $this->numResults = $query->num_rows;
        for($i = 0; $i < $this->numResults; $i++) {
            $r = mysqli_fetch_array($query);
            $key = array_keys($r);
            for($x = 0; $x < count($key); $x++) {
                if(!is_int($key[$x])) {
                    if(mysqli_num_rows($query) >= 1) {
                        $this->result[$i][$key[$x]] = $r[$key[$x]];
                    } else {
                        $this->result = null;
                    }
                }
            }
        }
        return true;
    } else {
        //array_push($this->selectresult, 'No rows returned');
        return false;
    }
}

因此,我有一种创建数据库连接的方法,该方法将其分配给$ dbConnect变量。我的问题是,当我使用mysqli时,我需要能够在选择方法中获得此变量...但是无法使用上述代码来获得此变量。我收到以下错误:

注意:未定义的变量:dbConnect

指出我出错的地方的任何帮助都很棒。

将其声明为类属性

private $dbconnect;

然后在您的构造函数中,初始化

$this->dbconnect = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);

现在,您可以在整个课程中以$this->dbconnect

来引用它

您可以创建此类的属性

protected $dbconnect;

然后创建一个设置$dbconnect

值的构造函数
public function __construct()
{
     $this->dbconnect = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
}

,然后在您的select()函数中使用

$query = $this->dbconnect->query($sql);代替$query = $dbconnect->query($sql);

希望这会有所帮助。

最新更新