8.2模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)
程序员文章站
2022-04-17 19:51:52
...
8月2日作业:
模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)
实例
<?php namespace _0802; interface iNvxia //创建接口 { public function create($data); //创建增加数据的抽象方法 public function read(); //创建读取数据的抽象方法 public function update($data, $where); //创建更新数据的抽象方法 public function delete($where); //创建删除数据的抽象方法 } class Db implements iNvxia //创建一个类链接接口 { protected $pdo = null; //创建$pdo protected $table; // 创建数据库 // 构造方法: 连接数据库,并设置默认的数据表 public function __construct($dsn, $username, $password, $table) { $this->pdo = new \PDO($dsn, $username, $password); $this->table = $table; } // 增加数据的方法 public function create($data) { // 字段列表 $fields = ' (name, image, detail) '; // 值列表 $values = ' (:name, :image, :detail) '; // 创建SQL语句 $sql = 'INSERT INTO '.$this->table . $fields . ' VALUES ' . $values; //创建预处理对象 $stmt = $this->pdo->prepare($sql); //执行 $stmt->execute($data); // die($stmt->debugDumpParams()); return [ 'count' => $stmt->rowCount(), // 返回新增数据数量 'id' => $this->pdo->lastInsertId() //新增记录的id也返回 ]; } // 读取数据(查询) public function read($fileds = '*' , $where='', $limit = '0, 3') { // 设置查询条件 $where = empty($where) ? '' : ' WHERE ' . $where; //三元运算符 $limit = ' LIMIT ' . $limit; // //创建SQL语句 $sql = 'SELECT '. $fileds . ' FROM ' . $this->table. $where . $limit; //创建预处理对象 $stmt = $this->pdo->prepare($sql); //执行 $stmt->execute(); // 用二维数组返回所有数据 return $stmt->fetchAll(\PDO::FETCH_ASSOC); } // 更新数据 public function update($data, $where) { // SET参数实现拼装 $keyArr = array_keys($data); $set = ''; // 遍历 foreach ($keyArr as $value) { $set .= $value . '= :' . $value. ','; } $set =rtrim($set, ', '); //name = :name,detail= :detail,把最后一个逗号删除 $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; //创建SQL语句 $stmt = $this->pdo->prepare($sql); //创建预处理对象 $stmt->execute(); //执行语句 // 返回删除的数量 return $stmt->rowCount(); } } // 实例化 $dsn = 'mysql:host=127.0.0.1; dbname=nvxia'; $username = 'root'; $password = 'root'; $table = 'movies'; $db = new Db($dsn, $username, $password, $table); //新增数据的操作方法 $data = [ 'name' => '钓鱼', 'image' => 'diaoyu.jpg', 'detail' => '钓鱼真的是一项很棒的静心方法,看着清清河水,静待鱼儿上钩,真是一项很棒的体验!' ]; $mm = $db->create($data); echo '成功的新增了 '. $mm['count']. '条记录, 新增的记录的ID是: '. $mm['id']; echo '<hr>'; //查询操作 foreach ($db->read() as $value) { echo '<pre>'.print_r($value); echo '<br>'; } echo '<hr>'; // 查询操作 foreach ($db->read('name, detail', 'mov_id > 3') as $value) { echo '<pre>'.print_r($value); echo '<br>'; } echo '<hr>'; //更新数据 $data = [ 'name' => '打坐', 'detail' => '如果能在午后,铺上瑜伽垫子,搬出小茶座,打打坐,喝喝茶,生活节奏会变得特别不一样a' ]; $where = 'mov_id = 9'; echo '成功更新了:'.$db->update($data, $where).'条记录'; echo '<hr>'; //删除操作 $where = 'mov_id = 11'; echo '成功的删除了: ' . $db->delete($where) . ' 条记录';
运行实例 »
点击 "运行实例" 按钮查看在线实例
上一篇: react-redux源码不完全指北