博客列表 >链式数据库查询和添加-2019年8月1日

链式数据库查询和添加-2019年8月1日

无名氏_连的博客
无名氏_连的博客原创
2019年08月02日 22:24:08915浏览

首先,本次作业中链式数据查询方法是仿老师的案例编写的,其次添加数据库的方法是根据查询方法的基础上加入自己的想法编写出来的。

代码的运行流程用图片标注解释,直接上代码和图片吧:

实例

<?php

namespace quest;

class Quest
{
    //数据库连接对象
    public $pdo = null;
    //连接的数据表
    public $table;
    //查询字段名
    public $feild='*';
    //查询条件
    public $where;
    //查询的条数
    public $limit;
    public $data = [];

    //创建构造方法
    public function __construct($pdo){
        $this->pdo = $pdo;
    }

    //创建查询表方法并对$table赋值
    public function table($table){
        $this->table = $table;
        return $this;
    }
    //创建添加字段方法并对$feild赋值 默认值为 *
    public function feild($feild='*'){
        $this->feild = empty($feild)?'*':$feild;
        return $this;
    }
    //创建添加条件方法并对$where赋值
    public function where($where=''){
        $this->where = empty($where)?$where:' WHERE '.$where;
        return $this;
    }
    //创建限制条数方法并对$limit赋值
    public function limit($limit=''){
        $this->limit = empty($limit)?$limit:' LIMIT '.$limit;
        return $this;
    }

    //创建查询数据结果方法
    public function select(){
        $sql = ' SELECT '
            .$this->feild //引入字段名
            .' FROM '
            .$this->table//引入表名
            .$this->where//引入条件
            .$this->limit;//引入条数
        //预处理对象
        $stmt = $this->pdo->prepare($sql);
        //执行sql语句
        $stmt->execute();
        //返回查询全部数据
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    //创建添加单条数据结果方法
    public function insert($data=[]){
        $this->data = $data;
		//对以下sql语句进行拼接
         $str = '';
        foreach ($this->data as $k=>$v){

                $str .= '`'.$k.'`' .' = '."'".$v."'".' ,';
        }
        $sql = ' INSERT INTO '
            .$this->table//引入表名
            .' SET '
            .substr($str,0,strlen($str)-1);//对sql语句后面逗号进行截取,删除逗号
        //预处理对象
        $stmt = $this->pdo->prepare($sql);
        //执行sql语句
        $stmt->execute();
        //返回查询全部数据
        return $stmt->rowCount()?'成功添加'.$stmt->rowCount().'条数据':'添加数据失败';
    }
}

运行实例 »

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

实例

<?php
namespace _0801;
require 'Quest.php';
use quest\Quest;

class Db
{
    //数据库连接对象初始化
    public static $pdo =null;
    //设置服务器、库名
    const DSN = 'mysql:host=127.0.0.1;dbname=kuqiwang';
    //设置数据库登录账号
    const USER = 'root';
    //设置数据库登录密码
    const PWD = 'root';

    //连接数据库的静态方法
    public static function connect(){
        self::$pdo = new \PDO(self::DSN,self::USER,self::PWD);
    }

    //创建静态方法重载
    public static function __callStatic($name,$arguments){
        self::connect();
        $quest = new Quest(self::$pdo);
        return call_user_func_array([$quest,$name],$arguments);

    }

}

//查询数据实例化
$arr = Db::table('cates')
    ->where()
    ->limit(5)
    ->select();

foreach ($arr as $staff) {
    print_r($staff); echo '<br>';
}

//添加数据实例化
$data = ['name'=>'ty','alias'=>'体育'];
echo Db::table('cates')->insert($data);

运行实例 »

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

0801-1.png

0801-2.png0801-3.png

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