Correction status:qualified
Teacher's comments:链式操作, 是几乎所有框架都提供的功能
首先,本次作业中链式数据查询方法是仿老师的案例编写的,其次添加数据库的方法是根据查询方法的基础上加入自己的想法编写出来的。
代码的运行流程用图片标注解释,直接上代码和图片吧:
<?php namespace quest; class Quest { //数据库连接对象 public $pdo = null; //连接的数据表 public $table; //查询字段名 public $feild='*'; //查询条件 public $where; //查询的条数 public $limit; public $data = []; //创建构造方法 public function __construct($pdo){ $this->pdo = $pdo; } //创建查询表方法并对$table赋值 public function table($table){ $this->table = $table; return $this; } //创建添加字段方法并对$feild赋值 默认值为 * public function feild($feild='*'){ $this->feild = empty($feild)?'*':$feild; return $this; } //创建添加条件方法并对$where赋值 public function where($where=''){ $this->where = empty($where)?$where:' WHERE '.$where; return $this; } //创建限制条数方法并对$limit赋值 public function limit($limit=''){ $this->limit = empty($limit)?$limit:' LIMIT '.$limit; return $this; } //创建查询数据结果方法 public function select(){ $sql = ' SELECT ' .$this->feild //引入字段名 .' FROM ' .$this->table//引入表名 .$this->where//引入条件 .$this->limit;//引入条数 //预处理对象 $stmt = $this->pdo->prepare($sql); //执行sql语句 $stmt->execute(); //返回查询全部数据 return $stmt->fetchAll(\PDO::FETCH_ASSOC); } //创建添加单条数据结果方法 public function insert($data=[]){ $this->data = $data; //对以下sql语句进行拼接 $str = ''; foreach ($this->data as $k=>$v){ $str .= '`'.$k.'`' .' = '."'".$v."'".' ,'; } $sql = ' INSERT INTO ' .$this->table//引入表名 .' SET ' .substr($str,0,strlen($str)-1);//对sql语句后面逗号进行截取,删除逗号 //预处理对象 $stmt = $this->pdo->prepare($sql); //执行sql语句 $stmt->execute(); //返回查询全部数据 return $stmt->rowCount()?'成功添加'.$stmt->rowCount().'条数据':'添加数据失败'; } }
点击 "运行实例" 按钮查看在线实例
<?php namespace _0801; require 'Quest.php'; use quest\Quest; class Db { //数据库连接对象初始化 public static $pdo =null; //设置服务器、库名 const DSN = 'mysql:host=127.0.0.1;dbname=kuqiwang'; //设置数据库登录账号 const USER = 'root'; //设置数据库登录密码 const PWD = 'root'; //连接数据库的静态方法 public static function connect(){ self::$pdo = new \PDO(self::DSN,self::USER,self::PWD); } //创建静态方法重载 public static function __callStatic($name,$arguments){ self::connect(); $quest = new Quest(self::$pdo); return call_user_func_array([$quest,$name],$arguments); } } //查询数据实例化 $arr = Db::table('cates') ->where() ->limit(5) ->select(); foreach ($arr as $staff) { print_r($staff); echo '<br>'; } //添加数据实例化 $data = ['name'=>'ty','alias'=>'体育']; echo Db::table('cates')->insert($data);
点击 "运行实例" 按钮查看在线实例