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 相关文章推荐
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
显示程序执行时间php函数代码
Aug 29 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
PHP编写RESTful接口
Feb 23 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 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中操作Excel实例代码
2010/04/29 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
js 调用百度分享功能
2017/02/27 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
python三元运算符实现方法
2013/12/17 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python的socket编程入门
2018/01/29 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python列表切片操作实例总结
2019/02/19 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
关于python中的xpath解析定位
2020/03/06 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python 如何实现访问者模式
2020/07/28 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
python 实现波浪滤镜特效
2020/12/02 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
大学总结自我鉴定
2014/01/18 职场文书
小学副班长竞选稿
2015/11/21 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Django路由层如何获取正确的url
2021/07/15 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang