批改状态:合格
老师批语:面向接口, 而不是面向类, 这是面得对象开发的基本常识, 好好学习接口
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) . ' 条记录';点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号