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 COOKIE设置为浏览器进程
Jun 21 PHP
php 字符串函数收集
Mar 29 PHP
PHP JSON 数据解析代码
May 26 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
php常见的魔术方法详解
Dec 25 PHP
php中的观察者模式简单实例
Jan 20 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
php版微信小店调用api示例代码
Nov 12 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 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 session会话的安全性分析
2011/09/08 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
Open and Print a Word Document
2007/06/15 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
应届生求职自荐信
2014/07/04 职场文书
异地年检委托书范本
2014/09/24 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
小学推普周活动总结
2015/05/07 职场文书
党支部考察意见范文
2015/06/02 职场文书
幸福终点站观后感
2015/06/04 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python