欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

8.2模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)

程序员文章站 2022-04-17 19:51:52
...

8月2日作业:

模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)

8.2模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)

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) . ' 条记录';

运行实例 »

点击 "运行实例" 按钮查看在线实例