PHP最简单自定义自己的框架实现像TP链式sql语句(六)

这篇具有很好参考价值的文章主要介绍了PHP最简单自定义自己的框架实现像TP链式sql语句(六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、实现效果,链式sql语句封装

order、where、group、limit等封装

PHP最简单自定义自己的框架实现像TP链式sql语句(六),自己框架,php,mysql,sql,数据库,php,开发语言

 PHP最简单自定义自己的框架实现像TP链式sql语句(六),自己框架,php,mysql,sql,数据库,php,开发语言

 2、数据表构造函数入参,ModelBase.php
    public $table = NULL;  
    public function __construct($table){
        $this->table=$table;
        if(!$this->table){
            die("no table" );
        }
        $this->_connect();
        $this->_opt();
    }
3、ModelBase.php定义order、where、group、limit等参数以及默认值
  public $opt;
  private function _opt(){
        $this->opt=array(
            'filed'=>'*',
            'where'=>'',
            'group'=>'',
            'having'=>'',
            'order'=>'',
            'limit'=>''
        );
    }
    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;
    }
4、封装select、find、delete等方法动态参数ModelBase.php
  public function select()
    {
        $sql = "SELECT ".$this->opt['filed']. "FROM ".$this->table.$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();
    }
5、indexCrl.php调用链式sql
<?php
class indexCrl{
    public function index(){
        $model= new ModelBase("test");
        //链式sql查询
        $data=$model->where('id>0')->order('id desc')
            ->group('name')->having("AVG(age)>10")
            ->limit(1)->select();
        var_dump($data);

        //链式sql更新
        $up=[
            "name"=>"小李"
        ];
        $model->where('id=2')->update($up);
        //链式sql删除
        $model->where('id=2')->delete();
        //添加
        $insert=[
            "name"=>"张三",
            "age"=>13,
        ];
        $model->insert($insert);

    }
}

6、完整的ModelBase.php文件文章来源地址https://www.toymoban.com/news/detail-642612.html

<?php
class ModelBase
{
    public $pdo = NULL;
    public $table = NULL;
    public $opt;
    public function __construct($table){
        $this->table=$table;
        if(!$this->table){
            die("no table" );
        }
        $this->_connect();
        $this->_opt();
    }
    private function _connect(){

        if($this->pdo){
            return true;
        }
        $host = DB_HOST;
        $db = DB_DATABASE;
        $user = DB_USER;
        $pass = 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'=>''
        );
    }
    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['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最简单自定义自己的框架实现像TP链式sql语句(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ThinkPHP6.0 链式SQL语句

    查询单个数据 查询结果集(查询结果返回多条数据的意思) ​ 查询一个字段 ​ 查询一列 添加数据 修改数据 删除数据 根据主键删除 ​ 条件删除 ​ 查询数据 格式 where(\\\'字段名\\\',\\\'查询表达式\\\',\\\'查询条件\\\'); 模糊查询 区间查询 IN查询 Not Null Null 链式操作示例 field操作(输出选择

    2024年02月11日
    浏览(41)
  • php+mysql的基于微信小程序的企业装修平台的设计与实现 TP框架(附源码 调试 讲解 文档)

    随着移动互联网的普及,传统的装修行业逐渐向互联网装修转型。微信小程序作为一种新型的应用形态,凭借其便捷性、易用性和普及性,成为了企业装修平台开发的首选。本文旨在设计和实现一个基于微信小程序的企业装修平台,通过公司展示、案例展示、设计师展示、在

    2024年02月05日
    浏览(38)
  • PHP自己的框架实现function引入和dump函数(完善篇一)

    1、实现效果     2、创建三个function.php  3、文件加载(KJ.php) 定义目录  加载文件  4、dump方法实现,file下面function.php 5、框架iindexCrl.php调用dump 6、完整KJ.php

    2024年02月12日
    浏览(37)
  • 6.php开发-个人博客项目&Tp框架&路由访问&安全写法&历史漏洞

    目录 知识点 php框架——TP URL访问 Index.php-放在控制器目录下 ​编辑 Test.php--要继承一下 带参数的—————— 加入数据库代码 --不过滤 --自己写过滤 --手册(官方)的过滤 用TP框架找漏洞: 如何判断网站是thinkphp? 黑盒: 白盒: php总结 ​ 1-基于TP框架入门安装搭建使用

    2024年01月25日
    浏览(44)
  • 第27天:安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞

    1.TP框架-开发-配置架构路由MVC模型 参考:https://www.kancloud.cn/manual/thinkphp5_1 配置架构-导入使用 路由访问-URL访问 数据库操作-应用对象 文件上传操作-应用对象 前端页面渲染-MVC模型 1.TP框架-安全-不安全写法版本过滤绕过 1.内置代码写法 不合要求的代码写法-ThinkPHP5-自写 2.框架

    2024年04月25日
    浏览(43)
  • PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)

    一、实现功能,数据表前缀、alias、model、table、join方法实现    二、表前缀实现 1、config.php增加表前缀  2、增加表前缀方法function.php 3、PDO数据表增加表前缀ModelBase.php 三、alias数据表别名和join实现实现ModelBase.php 四、控制器实现,数据表前缀、alias、model、table、join方法查询

    2024年02月10日
    浏览(32)
  • tp8 升级TP框架版本,同时网站打不开,错误代码 ERR_ADDRESS_INVALID,启动内置服务器 运行PHP命令php think run 输出结果是空白

    环境:windows11  phpstudy_pro  thinkphp8.0 php8.2.9   进入composer : 选择composer,再选择对应网站的PHP版本, 启动内置服务器 按上面操作,发现输出结果是空白,没有任何东西 三、启用VSCODE的xdebug调试 在VSCODE中启用调试F5,在think文件中打断点 全部勾上 一直一步一步往下走,发现

    2024年01月22日
    浏览(62)
  • 【MyBatis Plus】深入探索 MyBatis Plus 的条件构造器,自定义 SQL语句,Service 接口的实现

    在前文中,介绍了 MyBatis Plus 的一些基础功能,我们发现使用MyBatis Plus 可以非常简单的就实现对单表的增删改查操作。但是这些操作对应的 SQL 语句都非常简单,如果是面对一些复杂的 SQL 或者多表查询这样的情况,就需要我们自己来重新组织 SQL 语句了。 本文将重点探索 M

    2024年02月07日
    浏览(41)
  • PHP傻瓜也能搭建自己框架

    PHP最简单自定义自己的框架(一) PHP最简单自定义自己的框架创建目录结构(二) PHP最简单自定义自己的框架定义常量自动生成目录(三) PHP最简单自定义自己的框架控制器自动加载运行(四) PHP最简单自定义自己的框架数据库封装调用(五) PHP最简单自定义自己的框架

    2024年02月13日
    浏览(33)
  • PHP自己的框架session()使用(完善篇六)

    1、PHP自己的框架session()      2、session类(SessionBase.php) 3、封装session类function.php 4、调用session(indexCrl.php)

    2024年02月11日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包