• PHP导出数据库sql文件,add和update


    /**
    * 导出sql文件
    */
    public function exportSql(){
      //需要导出的数据库表存入到数组当中
      $tables =array("T_CRM_QUEUE_FAIL","T_CRM_QUEUE");
     
     //定义一个变量存放sql语句
      $content = '';
     //打开并写入sql文件
      $fp    = fopen("./Upload/exportSql/".date('Ymd').".sql",'w+');
      foreach ($tables as $k=>$v){
         $content .= " --  ".$v."-- ";
         $sql   = "SELECT * FROM ".$v;
         $tablesInfo= M()->query($sql);
         //将每个表的数据导出到文件
         foreach($tablesInfo as $key=> $val){
            if($val['CDATE'] != $val['UDATE']){//如果添加时间和修改时间不一致,则为修改
               $sqlInsert = $this->array_to_sql($val,'update');
               $content.="UPDATE `$v`  ".$sqlInsert."; ";
            }else{
               $sqlInsert = $this->array_to_sql($val);
               $content.="INSERT INTO `$v` VALUES ".$sqlInsert."; ";
            }
         }
      }
      fputs($fp,$content );//写入文件
      fclose($fp);//关闭
    }
    /**
    * [array_to_sql 根据数组key和value拼接成需要的sql]
    * @param [type] $array  [key, value结构数组]
    * @param string $type  [sql类型insert,update]
    * @param array $exclude [排除的字段]
    * @return [string]     [返回拼接好的sql]
    */
    public  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;
    }
  • 相关阅读:
    iOS多线程_06_GCD其它用法
    iOS多线程_05_线程间通信NSThread/GCD
    iOS多线程_04_GCD
    iOS多线程_03_Block
    iOS多线程_02_多线程的安全问题
    iOS多线程_01_简介和NSThread
    shell 根据端口号输出所有的pid
    【java核心36讲】接口和抽象类的区别
    CSS布局
    CSS基础
  • 原文地址:https://www.cnblogs.com/pingliangren/p/5586878.html
Copyright © 2020-2023  润新知