Blogger Information
Blog 28
fans 2
comment 0
visits 23181
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
8.2模仿课堂案例,利用接口实现一个基本的数据库操作类(CURD)
背着吉他的女侠
Original
745 people have browsed it

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

运行实例 »

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


Correction status:qualified

Teacher's comments:面向接口, 而不是面向类, 这是面得对象开发的基本常识, 好好学习接口
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post