PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)

这篇具有很好参考价值的文章主要介绍了PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实现功能,数据表前缀、alias、model、table、join方法实现

PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束),自己框架,mysql,php,php,开发语言,sql,数据库PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束),自己框架,mysql,php,php,开发语言,sql,数据库

 文章来源地址https://www.toymoban.com/news/detail-692245.html

 二、表前缀实现
1、config.php增加表前缀
 'DB_PEX'=>'fa_',//数据库前缀
 2、增加表前缀方法function.php
function model($table){
    $model=new  ModelBase($table,config("DB_PEX"));
    return $model;
}
function table($table){
    return  new  ModelBase($table);
}
3、PDO数据表增加表前缀ModelBase.php
    private $pex="";//表前缀
    public function __construct($table=null,$pex=""){
        $this->pex=$pex;
        if($table){
            $this->table=$this->pex.$table;
        }
        if(!$this->table){
            die("no table" );
        }
        $this->_connect();
        $this->_opt();
    }
三、alias数据表别名和join实现实现ModelBase.php
    private function _opt(){
        $this->opt=array(
            'filed'=>'*',
            'where'=>'',
            'group'=>'',
            'having'=>'',
            'order'=>'',
            'limit'=>'',
            'alias'=>'',
            'join'=>'',
        );
    }

    public function alias($as){
        $this->opt['alias']=  ' as '.$as." ";
        return $this;
    }

    public function join($join,$condition,$type=''){
        $this->opt['join']=  " {$type} join ".$this->pex.trim($join)." on {$condition}";
        return $this;
    }
    public function select()
    {

        $sql = "SELECT ".$this->opt['filed']. " FROM ".$this->table.$this->opt['alias'].$this->opt['join'].$this->opt['where']
            .$this->opt['group'].$this->opt['having'].$this->opt['order'].$this->opt['limit'];

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
四、控制器实现,数据表前缀、alias、model、table、join方法查询
 public function index(){
     $data= model("test")
         ->filed('t.*,r.role')
         ->alias('t')
         ->join('role r','t.id=r.testId','left')
         ->select();
     var_dump($data);
     $data= table("fa_test")->select();
     var_dump($data);
    }
五、完整ModelBase.php代码
<?php
class ModelBase
{
    public $pdo = NULL;
    public $table = NULL;
    public $opt;
    private $pex="";//表前缀
    public function __construct($table=null,$pex=""){
        $this->pex=$pex;
        if($table){
            $this->table=$this->pex.$table;
        }
        if(!$this->table){
            die("no table" );
        }
        $this->_connect();
        $this->_opt();
    }
    private function _connect(){

        if($this->pdo){
            return true;
        }
        $host = config('DB_HOST');
        $db = config('DB_DATABASE');
        $user = config('DB_USER');
        $pass =config('DB_PWD');

        $dsn = "mysql:host=$host;dbname=$db;charset=utf8";
        try {
            $this->pdo = new PDO($dsn, $user, $pass, [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        } catch (PDOException $e) {
            die("数据库连接失败: " . $e->getMessage());
        }
    }

    private function _opt(){
        $this->opt=array(
            'filed'=>'*',
            'where'=>'',
            'group'=>'',
            'having'=>'',
            'order'=>'',
            'limit'=>'',
            'alias'=>'',
            'join'=>'',
        );
    }

    public function alias($as){
        $this->opt['alias']=  ' as '.$as." ";
        return $this;
    }

    public function join($join,$condition,$type=''){
        $this->opt['join']=  " {$type} join ".$this->pex.trim($join)." on {$condition}";
        return $this;
    }
    public function where($where){
        $this->opt['where']=  ' WHERE '.$where;
        return $this;
    }
    public function order($order){
        $this->opt['order']=  ' ORDER BY '.$order;
        return $this;
    }
    public function group($group){
        $this->opt['group']=  ' GROUP BY '.$group;
        return $this;
    }
    public function having($having){
        $this->opt['having']=  ' having '.$having;
        return $this;
    }
    public function filed($filed){
        $this->opt['filed']= $filed;
        return $this;
    }
    public function limit($limit){
        $this->opt['limit']=  ' limit '.$limit;
        return $this;
    }
    public function select()
    {

        $sql = "SELECT ".$this->opt['filed']. " FROM ".$this->table.$this->opt['alias'].$this->opt['join'].$this->opt['where']
            .$this->opt['group'].$this->opt['having'].$this->opt['order'].$this->opt['limit'];

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    public function find(){
        $data=$this->limit(1)->select();
        return current($data);
    }
    public function delete()
    {
        $sql = "DELETE FROM ".$this->table.$this->opt['where'];
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->rowCount();
    }
    public function insert( $data) {
        // 准备SQL语句
        $fields = implode(', ', array_keys($data));
        $values = ':' . implode(', :', array_keys($data));
        $sql = "INSERT INTO ". $this->table." (".$fields.") VALUES (".$values.")";
        // 绑定参数并执行SQL语句
        $stmt = $this->pdo->prepare($sql);
        foreach ($data as $key => $value) {
            $stmt->bindValue(':' . $key, $value);
        }
        return $stmt->execute();
    }


    public function update( $data)
    {
        if(empty($this->opt['where'])) die('更新语句必须有were条件');
        $up='';
        foreach ($data as $k=>$v){
            $up.="`".$k."`='".$v."'";
        }
        $sql="update  ".$this->table.' set '.$up.$this->opt['where'];
        $stmt = $this->pdo->prepare($sql);

        $stmt->execute();
        return $stmt->rowCount();
    }

}

到了这里,关于PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle数据表转换为mysql数据表

    oracle数据表转换为mysql数据表,或者反过来,我们可以借助navica的工具 1.打开navicat的工具-数据传输 2.选择源数据库以及目标数据库 目标可以选择数据库也可以选择文件,目标数据库需要提前建好表,这里是选择文件,注意选择一个文件,sql格式即为目标数据库类型,这里不

    2024年02月16日
    浏览(48)
  • MySql基础教程(三):创建数据表、数据增删改查、删除数据表

    创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 1.1 语法 下面是创建MySQL数据表的SQL通用语法: 以下例子在 nobug 数据库中创建数据表 nobug_user : 实例解析: 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,

    2024年02月11日
    浏览(44)
  • 实现一个MYSQL工具类,包含判断创建数据表是否存在,创建数据表

    可以使用Python的MySQLdb模块来实现一个MYSQL工具类。下面是一个简单的实现示例: 使用示例: 在上面的示例中,我们首先创建了一个MySQLTool类,并在初始化方法中传入了数据库的连接信息。然后使用connect方法连接到数据库。 table_exists方法用于判断给定的数据表是否存在,它执

    2024年01月15日
    浏览(43)
  • 【MySQL】MySQL 数据类型,数值、日期和时间、字符串类型,创建数据表,删除数据表

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日

    2024年02月15日
    浏览(52)
  • excel vba 将多张数据表的内容合并到一张数据表

    功能描述:  一个Excel文件有很多个 样式相同 的数据表, 需要将多张数据表的内容合并到一张数据表里。 vba实现代码如下:  文件链接:数据表合并.bas 下载后直接在excel 查看代码处导入文件即可。

    2024年02月11日
    浏览(32)
  • 数据表插入数据

    在MySQL通过INSERT语句向数据表中插入数据。在此,我们先准备一张学生表,代码如下:  create table student(  id int,  name varchar(30),  age int,  gender varchar(30)  ); 1. 为表中所有字段插入数据 每个字段与其值是严格一一对应的。也就是说:每个值、值的顺序、值的类型必须与对应的

    2024年02月08日
    浏览(32)
  • 数据库||数据表的更新

    1.实验题目:数据表的更新 2.实验目和要求: 1)掌握SQL语句的数据操纵功能 2)掌握SQL语言的数据插入,修改,删除操作 3)掌握与嵌套查询相结合的插入,删除,修改数据的SQL语句 3.实验步骤: 1) 按实验内容要求完成各项操作 2) 根据题目要求给出解决方案 3) 提交实验报告 4.实验内容

    2024年02月19日
    浏览(39)
  • Hive数据表删除数据操作

    hive数据表中,数据的删除不可以想Oracle、MySQL那样使用delete语句删除,所以在删除数据的时候使用另外的方法 hive的数据删除,一般是两种方式 当需要删除某一条数据的时候,我们需要使用 insert overwrite 释义:就是用满足条件的数据去覆盖原表的数据,这样只要在where条件里

    2024年02月11日
    浏览(36)
  • 大数据StarRocks(七):数据表创建

    1.1 Row Column 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 ⚫ 在默认的数据模型中,Column 只分为排序列和非排序列。存储引擎会按照排序列对数据进行排序存储,并建立稀疏索引,以便在排序数据上进行快速查找。 ⚫ 而在

    2024年01月16日
    浏览(41)
  • mysql数据库和数据表

    常用的数据类型: int : 整型  用于定义整数类型的数据 float : 单精度浮点4字节32位  准确表示到小数点后六位. double :双精度浮点8字节64位 char :固定长度的字符类型  用于定义字符类型数据 varchar :可变长度的字符类型 text : 文本 image: :图片 SQL语言: Structured Query La

    2024年02月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包