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与MySQL交互使用详解
Oct 09 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
php中file_exists函数使用详解
May 08 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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
BBS(php & mysql)完整版(三)
2006/10/09 PHP
php 中的str_replace 函数总结
2007/04/27 PHP
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
python常规方法实现数组的全排列
2015/03/17 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
详解Python多线程
2016/11/14 Python
python中的二维列表实例详解
2018/06/19 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
简历中的自我评价范文
2014/02/05 职场文书
思想品德课教学反思
2014/02/10 职场文书
创建文明学校实施方案
2014/03/11 职场文书
教师一岗双责责任书
2014/04/16 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
python入门之算法学习
2021/04/22 Python
mysql 带多个条件的查询方式
2021/06/05 MySQL
Elasticsearch 索引操作和增删改查
2022/04/19 Python