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,ajax实现分页
Mar 27 PHP
smarty section简介与用法分析
Oct 03 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php汉字转拼音的示例
Feb 27 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 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
php使用百度ping服务代码实例
2014/06/19 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
javascript继承的六大模式小结
2015/04/13 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
Python之pymysql的使用小结
2019/07/01 Python
简单了解python代码优化小技巧
2019/07/08 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
英语道歉信范文
2014/01/09 职场文书
2015年度党员个人总结
2015/02/14 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis