Übung der statischen Methodenüberladung, um einen verketteten Zugriff auf die Datenbank zu erreichen
demo5.php verweist auf die Klasse von Query.php
Beim Zugriff auf die Methode in Query erhalte ich auf der Seite die Meldung, dass die Methode „Tabelle“ nicht in der Datenbank gefunden wurde
Das Folgende ist der Quellcode, ich hoffe, Sie können mir helfen, die Fehler zu überprüfen
Der erste ist Query.php
pdo = $pdo; } //调用表名 public function table($tableName) { $this->table = $tableName; //关键是这一步 return $this; } //调用字段 public function field($fields) { $this->field = $fields; //关键是这一步 return $this; } //设置查询条件 public function where($where) { $this->where = $where; return $this; } //设置显示数量 public function limit($limit) { $this->limit = $limit; return $this; } //创建SQL语句查询 public function select() { //设置查询条件 $fields = empty($this->field) ? '*' : $this->field; $where = empty($this->where) ? '' : ' WHERE ' . $this->where; $limit = empty($this->limit) ? '' : ' LIMIT ' . $this->limit; //SQL $sql = 'SELECT '.$fields. 'FROM' .$this->table. $where . $limit; //预处理执行 $stmt = $this->pdo->prepare($sql); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } }
Der zweite ist demo5.php
field('cate_id, name, alias') ->where('cate_id>=2') ->select(); foreach($cats as $cat){ print_r($cat); }
找到问题了,是Query.php的第65行,做拼接的时候,FROM前后应该加上空格。
页面提示方法 'table' 在 Database 中未找到