博主信息
博文 32
粉丝 0
评论 0
访问量 28314
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
08-02作业:模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)
Yx的博客
原创
1199人浏览过

我们要实现增删改查的数据库原列表如下:

03.png

代码实例:

<?php

namespace _2019C;
// 定义一个接口iJie, 实现数据库操作
interface iJie
{
    public function create($data);   // 增加数据
    public function read();          // 读取数据
    public function update($data, $where);     // 更新数据
    public function delete($where);            // 删除数据
}

// 创建类 Db
class Db implements iJie
{
    // 数据库的连接对象,给一个空值防止出错
    protected $pdo = null;
    protected $table;

    // 构造方法: 连接数据库,并设置默认的数据表
    public function __construct($dsn, $username, $password, $table)
    {
        $this->pdo = new \PDO($dsn, $username, $password);
        $this->table = $table;
    }

    // 增加数据
    public function create($data)
    {
        // 字段列表,表中有name, age, sex, mobile 字段
        $fields = ' (name, age, sex,  mobile) ';
        $values = ' (:name, :age, :sex,  :mobile) ';
        // 创建数据库SQL语句
        $sql = 'INSERT INTO '.$this->table . $fields . ' VALUES ' . $values;

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        return [
            'count' => $stmt->rowCount(),
            'id' => $this->pdo->lastInsertId()
        ];
    }

    // 读取数据 ,查询操作
    public function read($fileds = '*' , $where='', $limit = '0, 5')
    {
        $where = empty($where) ? '' : ' WHERE ' . $where;
        $limit = ' LIMIT ' . $limit;
        $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, ', ');

        $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=127.0.0.1;dbname=php';
$username = 'root';
$password = 'root';
$table = 'stud';
$db = new Db($dsn, $username, $password, $table);

// 新增操作
$data = [
    'name'=> '狗子',
    'age'=> 30,
    'sex' => 1,
    'mobile'=> '13888888888'
];

echo '<hr>';
foreach ($db->read() as $item) {
    print_r($item); echo '<br>';
}

echo '<hr>';

// 查询操作
foreach ($db->read('stud_id, name, age', 'age > 18') as $item) {
    print_r($item); echo '<br>';
}

// 更新操作
$data = [
    'name'=> '狗子',
    'age'=> 88,
    'sex' => 1,
    'mobile'=> '13000000000'
];

$where = 'stud_id = 16';

echo '成功的更新了: ' . $db->update($data, $where) . ' 条记录';

echo '<hr>';

// 删除操作,这里就不执行了
//$where = 'stud_id = 16';
//echo '成功的删除了: ' . $db->delete($where) . ' 条记录';

运行实例 »

02.png

删除操作也是如此,下面是更新成功后的数据库截图:

01.png



批改状态:合格

老师批语:这个案例非常的实用, 完全 可以用在你自己的项目中
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学