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 09 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
php常用日期时间函数实例小结
Jul 04 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 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
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
Yii使用技巧大汇总
2015/12/29 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python中的引用和拷贝浅析
2014/11/22 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python爬豆瓣电影实例
2018/02/23 Python
python爬取内容存入Excel实例
2019/02/20 Python
PyQt5 多窗口连接实例
2019/06/19 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
领导的自我鉴定
2013/12/28 职场文书
阿德的梦教学反思
2014/02/06 职场文书
模范家庭事迹材料
2014/02/10 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
村级换届选举方案
2014/05/10 职场文书
大学生创业计划书
2014/08/14 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
街道务虚会发言材料
2014/10/20 职场文书
财务经理岗位职责
2015/01/31 职场文书
教师考核鉴定意见
2015/06/05 职场文书
学习雷锋主题班会
2015/08/14 职场文书
放飞理想主题班会
2015/08/14 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
html form表单基础入门案例讲解
2021/07/21 HTML / CSS