加入收藏 | 设为首页 | 会员中心 | 我要投稿 平顶山站长网 (https://www.0375zz.cn/)- 分布式云、数据处理、媒体处理、图像分析、基础存储!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中实现用数组妩媚地生成要执行的sql语句

发布时间:2022-07-26 09:05:44 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php中实现用数组妩媚地生成要执行的sql语句,本文直接给出代码示例,需要的朋友可以参考下 会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用ThinkPHP的addAll()函数,却会将已有的数据删掉再重新写入。这明显
  这篇文章主要介绍了php中实现用数组妩媚地生成要执行的sql语句,本文直接给出代码示例,需要的朋友可以参考下
 
  会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用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;
    }
  当然,这个方法还有很多可以斟酌的地方,能用,但不是最好的,园子的猿猿们你们有更好的方法吗?请告诉我吧!

(编辑:平顶山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读