说明 : $tmpwj为每行逗号分割的文本。运行时mysql只能插入1000条记录,之后便有一段时间连接不上数据库--#2003 数据库无响应。
$db=new procq();
foreach($tmpwj as $tk=>$tv){
   $vljzfc='';
   
    if($db->sfcf('djb',$tv[3],'')){
        printf('数据有重复:',trim($tv[3]),'<br/>');
        $cfhs=$cfhs+1;
    }
    else{
        //连接value值字符串
        $hh+=1;   
        if(strlen(trim($tv))!=19 and strlen(trim($tv))>1){
        $har=explode(',',$tv);
        foreach($har as $hk=>$hv){
              $vljzfc=$vljzfc.",'".$hv."'";
        }
        //插入记录到数据库
       $vljzfc=substr($vljzfc,1,strlen($vljzfc)-1); 
       //$zszs=$zszs.'('.$vljzfc.'),';
          $db->inst('djb','j_bz,j_ssny,j_ywy,j_bdh,j_tbr,j_xz,j_llv,j_dkqq,j_dkzq,j_dkje,j_dh,j_hkzztb,j_hkrq,j_hkrxm,j_dqchr,j_lx,j_tzjg,j_tzjg2,j_bz1,j_bz2',$vljzfc,$hh)==true;
    //{
      //printf('数据导入成功!');  
    
    //}//else{
//      printf('数据导入失败!');
//    }
//   
      }
    }
    
  
}
以下为类procq中inst部分的代码
 function inst($tbname,$zds,$values,$dqhh){
        $sqlstr='insert into '.$tbname.' ('.$zds.') values('.$values.')';
        //echo $sqlstr;
        $mysq=@new mysqli($this->host,$this->user,$this->pwd,$this->sjkm);
        if(mysqli_connect_errno()){
             printf('数据库连接失败!');
          }else{
                       
             $mysq->query("set names 'gbk'");
             $rslt=$mysq->query($sqlstr);
             if(!$rslt){
                 printf('数据添加操作失败!');
                return false;
             }else{
                return true;  
             }
                          
             $mysq->close();
            // if($dqhh%300==0){
//                sleep(10);
//             }
            }
        
        }

解决方案 »

  1.   

    $mysq=@new mysqli($this->host,$this->user,$this->pwd,$this->sjkm);
    同一数据库,一个php进程创建一个数据库连接资源,,
      

  2.   

    像你这样的数据,可用 mysql 的 load infile 指令直接导入,不必化作一条条的 insert 指令另外,数据库连接值执行一次,有助于提高效率,至少不需要每条记录都执行 $mysq->query("set names 'gbk'"); 了
      

  3.   

    插一插暂停休息休息,别老插... 是不是 mysql 也给你插得叫苦连天嘛...
      

  4.   

    SQL 放SESSION 里。。然后慢慢跳转网页。慢慢刷。