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实现递归循环每一个目录
Aug 08 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php的curl封装类用法实例
Nov 07 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP中类与对象功能、用法实例解读
Mar 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
Python 里最强的地图绘制神器
2021/03/01 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
大学专科求职信
2014/07/02 职场文书
思想道德自我评价2015
2015/03/09 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python