php中实现用数组妩媚地生成要执行的sql语句


Posted in PHP onJuly 10, 2015

 会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用ThinkPHP的addAll()函数,却会将已有的数据删掉再重新写入。这明显不是我们想要的。但自己写sql每次几十个字段也是醉了。如何优雅而又轻松地实现sql的自动生成呢?于是有了下面这个方法。

/**
   * [array_to_sql 根据数组key和value拼接成需要的sql]
   * @param [type] $array  [key, value结构数组]
   * @param string $type  [sql类型insert,update]
   * @param array $exclude [排除的字段]
   * @return [string]     [返回拼接好的sql]
   */
  function array_to_sql($array, $type='insert', $exclude = array()){
    
    $sql = '';
    if(count($array) > 0){
      foreach ($exclude as $exkey) {
        unset($array[$exkey]);//剔除不要的key
      }

      if('insert' == $type){
        $keys = array_keys($array);
        $values = array_values($array);
        $col = implode("`, `", $keys);
        $val = implode("', '", $values);
        $sql = "(`$col`) values('$val')";
      }else if('update' == $type){
        $tempsql = '';
        $temparr = array();
        foreach ($array as $key => $value) {
          $tempsql = "'$key' = '$value'";
          $temparr[] = $tempsql;
        }

        $sql = implode(",", $temparr);
      }
    }
    return $sql;
  }

当然,这个方法还有很多可以斟酌的地方。能用,但不是最好的。园子的猿猿们你们有更好的方法吗?请告诉我吧!

PHP 相关文章推荐
php图片加中文水印实现代码分享
Oct 31 PHP
PHP 错误处理机制
Jul 06 PHP
php+ajax实现无刷新分页
Nov 18 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
php UNIX时间戳用法详解
Feb 16 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
laravel-admin select框默认选中的方法
Oct 03 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 #PHP
codeigniter实现get分页的方法
Jul 10 #PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 #PHP
php基于Snoopy解析网页html的方法
Jul 09 #PHP
php生成固定长度纯数字编码的方法
Jul 09 #PHP
php随机获取金山词霸每日一句的方法
Jul 09 #PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 #PHP
You might like
使用apache模块rewrite_module (转)
2007/02/14 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
使用python实现简单五子棋游戏
2019/06/18 Python
python psutil模块使用方法解析
2019/08/01 Python
python模拟实现斗地主发牌
2020/01/07 Python
如何解决安装python3.6.1失败
2020/07/01 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
this关键字的含义
2015/04/08 面试题
劳资员岗位职责
2013/11/11 职场文书
厂长助理岗位职责
2013/12/27 职场文书
致200米运动员广播稿
2014/02/06 职场文书
运动会稿件300字
2014/02/14 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
保护动物倡议书
2014/04/15 职场文书
园艺师求职信
2014/04/27 职场文书
幼儿园运动会口号
2014/06/07 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
实习单位证明范例
2014/11/17 职场文书
街道社区活动报告
2015/02/05 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
python多线程方法详解
2022/01/18 Python