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开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
async和DOM Script文件加载比较
Jul 20 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
Python 中 list 的各项操作技巧
2017/04/13 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
python实现多线程端口扫描
2019/08/31 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
美德少年事迹材料
2014/01/23 职场文书
高级工程师英文求职信
2014/03/19 职场文书
学习党章的体会
2014/11/07 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
产品调价通知函
2015/04/20 职场文书
幸福来敲门观后感
2015/06/04 职场文书
社区低保工作总结2015
2015/07/23 职场文书
Python中使用ipython的详细教程
2021/06/22 Python