博主信息
博文 35
粉丝 0
评论 0
访问量 31144
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
接口操作数据表:CURD----2019年6月18日22:30分
白守的博客
原创
838人浏览过

实例

<?php   

// 这里说明一下,代码是一个个的写的,但是注释是复制的,为了防止我表达错误

// 接口开发数据库链接功能,拥有功能,增删改查
// 定义一个接口
interface iCurd
{
    // 增加数据
    public function create($data);
    // 读取数据
    public function read();
    // 更新数据
    public function update($data ,$where);
    // 删除数据
    public function delete($where);
}

// 创建一个子类 ,实现iCurd接口,完成基本的数据库操作

class Db implements iCurd
{   
    // 数据库的连接对象
    protected $pdo = null;

    // 数据表名
    protected $table;

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

    // 读取
    public function read($fields='*' , $where='',$limit='0,5')
    {
        // 设置查询的条件
        // 判断是否为空
        $where = empty($where) ? '' : 'WHERE ' . $where;
        // 设置显示数量
        $limit = ' LIMIT '.$limit;

        // 预处理查询操作
        $sql = 'SELECT '. $fields.'FROM ' .$this->table.$where.$limit;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        
        // 返回二维数组表示的查询结果集
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    
    // 新增,参数是数组:新记录的键值对
    public function create($data)
    {
        // 字段列表
        $fields = '(name,age,sex,position,mobile,hiredate)';
        // 值列表
        $values = '(:name,:age,:sex,:position,:mobile,:hiredate)';
        // 创建sql语句
        $sql = 'INSERT INTO '. $this->table.$fields. 'VALUES '.$values;
        // 预处理执行新增操作
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        // 返回新增数量, 新增记录的ID组成的数组
        return [
            'count'=>$stmt->rowCount(),
            'id'=>$this->pdo->lastInsertId()
        ];
    }



    // 更新,为了数据安全, 不允许无条件更新
    public function update($data,$where)
    {
// 获取数组的键名组成的数组
        $keyarr = array_keys($data);
        $set = '';
        // 遍历键名表示的字段列表,拼装预处理需要的sql语句,注意占符符的表示
        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返回被更新的记录数量

        return $stmt->rowCount();

    }
// 删除操作,和更新一样,这也是危险的写操作, 不允许无条件删除
    public function delete($where)
    {
        // 预处理执行删除操作(创建一个sql语句)
        $sql = 'DELETE FROM' . $this->table. 'WHERE ' . $where;
        // 准备执行sql语句
        $stmt = $this->pdo->prepare($sql);
        // 执行sql语句
        $stmt->execute();
        // return返回删除语句(不知道是不是应该这样说)
        return $stmt->rowCount();
    }
}

// 客户端的测试代码
// 实例化Db类
$dsn = 'mysql:host=localhost;dbname=php';
$user = 'root';
$password = 'root';
$db = new Db($dsn, $user, $password);

// // echo '克拉无法将刊发我';


// 查询
foreach ($db->read() as $it){
    // var_dump($it);
    echo "<li>名字:{$it['name']}--年龄:{$it['age']}----职位:{$it['position']}</li>";
}
// // 有条件的查询
// echo '<hr>';
// foreach ($db->read('staff_id, name, position', 'age > 50') as $item) {
//     print_r($item); echo '<br>';
// }

$data = [
    'name'=>'郭靖',
    'age'=>30,
    'sex'=>1,
    'position'=>'金刀驸马',
    'mobile'=>'13666668888',
    'hiredate'=>time()
];
$res = $db->create($data);
echo '成功新增'.$res['count'].'条记录,最新记录的主键ID是: '.$res['id'];

// echo '<hr>';

// 更新记录
// 更新刚刚添加的:郭靖

$data = [
    'age' => 40,
    'position'=>'抗金英雄'
];
$where = 'staff_id = 11';
echo '成功更新了: ' .$db->update($data, $where). ' 条记录';


echo '<hr>';

// 删除记录

$where = 'staff_id = 11';
echo '成功更新了: ' .$db->delete($where). ' 条记录';

运行实例 »

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

 

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学