Blogger Information
Blog 17
fans 0
comment 1
visits 15600
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
链式数据库查询和添加-2019年8月1日
无名氏_连的博客
Original
924 people have browsed it

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

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

实例

<?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

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