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 相关文章推荐
开源SNS系统-ThinkSNS
May 18 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
php中final关键字用法分析
Dec 07 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
php用xpath解析html的代码实例讲解
Feb 14 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
php在linux环境中如何使用redis详解
Dec 15 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使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python的时间模块datetime详解
2017/04/17 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python实现的Iou与Giou代码
2020/01/18 Python
python numpy数组中的复制知识解析
2020/02/03 Python
什么是Assembly(程序集)
2014/09/14 面试题
毕业生自我鉴定
2013/12/04 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书