写一个接口, 完成基本的数据表操作:CURD
实例
<?php //定义一个数据库访问接口:CURD,增删改查 interface iCurd { //增加数据 public function create($data); //读取数据 public function read(); //更新数据 public function update($data,$where); //删除数据 public function delete($where); } //创建Db类,实现iCurd接口 class Db implements iCurd { //连接对象 protected $pdo=null; //数据表 protected $table; //构造方法,在这个方法中,完成数据库的连接,还要设置默认的数据表 public function __construct($dsn, $user, $password, $table='staff') { $this->pdo = new PDO($dsn, $user, $password); $this->table = $table; } //读取数据 public function read($fields='*', $where='', $limit='0, 5') { // 设置查询条件 $where = empty($where) ? '' : ' WHERE ' . $where; // 设置显示数量 $limit = ' LIMIT ' . $limit; // 预处理查询操作 $sql = 'SELECT '.$fields.' FROM '.$this->table.$where.$limit; $stmt = $this->pdo->prepare($sql); $stmt->execute(); // 返回二维数组表示的查询结果集 return $stmt->fetchAll(PDO::FETCH_ASSOC); } //增加数据 public function create($data) { //字段列表 $fields='(name,age,sex,position,mobile,hiredate)'; //值列表 $values='(:name,:age,:sex,:position,:mobile,:hiredate)'; //创建SQL语句 // INSERT INTO 'staff'(字段列表) VALUES(值列表) $sql = 'INSERT INTO '.$this->table.$fields.' VALUES '.$values; //预处理 $stmt=$this->pdo->prepare($sql); $stmt->execute($data); //返回新增数量,新增记录的ID组成的数组 return [ 'count'=>$stmt->rowCount(), 'id'=>$this->pdo->lastInsertId() ]; } //更新数据 public function update($data,$where) { //获取数组的键名组成的数组 $keyArr=array_keys($data); $set=''; //遍历键名表示的字段列表,拼接预处理需要的SQL语句,注意占位符的表示 foreach ($keyArr as $value){ $set.=$value.'=:'.$value.', '; } //去掉最后一个逗号,注意每个逗号都有一个空格,去除时也要带上这个空格 $set=rtrim($set,', '); //预处理 $sql = 'UPDATE '.$this->table.' SET '.$set .' WHERE ' .$where; $stmt = $this->pdo->prepare($sql); $stmt->execute($data); //返回被更新的记录数量 return $stmt->rowCount(); } //删除数据 public function delete($where) { //预处理 $sql = 'DELETE FROM '.$this->table.' WHERE '.$where; $stmt = $this->pdo->prepare($sql); $stmt->execute(); return $stmt->rowCount(); } } // 实例化Db类 $dsn = 'mysql:host=localhost;dbname=php'; $user = 'root'; $password = 'root'; $db = new Db($dsn, $user, $password); // 读取 read() foreach ($db->read('staff_id, name, position', 'age > 50') as $item) { print_r($item); echo '<br>'; } echo '<hr>'; //新增 creat() //$data = [ // 'name'=>'小苹果', // 'age'=>10, // 'sex'=>1, // 'position'=>'果园明星', // 'mobile'=>'13666668888', // 'hiredate'=>time() //]; //$res = $db->create($data); //echo '成功新增'.$res['count'].'条记录,最新记录的主键ID是: '.$res['id']; echo '<hr>'; //更新 update() //$where='staff_id=22'; //$data=[ // 'age'=>20, // 'position'=>'树林里的' //]; //echo '成功的更新了'.$db->update($data,$where).'条记录'; echo '<hr>'; //删除 delete() $where='staff_id=22'; echo '成功的删除了'.$db->delete($where).'条记录';
运行实例 »
点击 "运行实例" 按钮查看在线实例