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

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

背着吉他的女侠
背着吉他的女侠原创
2019年08月05日 19:55:28737浏览

8月2日作业:

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

1.jpg

2.jpg

实例

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

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议