2013-10-08 101 views
0

我有一个while循环从csv.Inside获取数据while循环有条件(如条件)如果条件为真foreach循环将在我们执行的地方执行想要一次插入一行到数据库中。这应该继续每一行的csv。如果我在csv中有10行,它应该在数据库中插入所有10行。但mycode将插入第一行10次。走出内部循环,并与外部循环连续

$handle = fopen($_FILES['upcsv']['tmp_name'], "r"); 
$count = count(file($_FILES['upcsv']['tmp_name'])); 
fgetcsv($handle, 1000, ","); 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
{ 
    $clt = mysql_query("select MCLNTLKNOFLG,MCLNTDKTRNGFRM,MCLNTDKTRNGTO from mclientmst where MCLNTCD ='".$data[1]."'"); 
    if(mysql_num_rows($clt)>0) 
    {  
     $clts = mysql_fetch_array($clt); 
     if($clts['MCLNTLKNOFLG']==1) 
     { 
     $i=1 ; 
     foreach(range ($clts['MCLNTDKTRNGFRM'], $clts['MCLNTDKTRNGTO']) as $num) 
     { 
      $dkt = mysql_query("select XCMPCD from xdockethdr where XDKTNO ='$num'"); 
      $ndkt = mysql_query("select XCMPCD from xtempdockethdr where XDKTNO ='$num'"); 
      if(mysql_num_rows($dkt)==0 && mysql_num_rows($ndkt)==0) 
      { 
       $date = explode('/',$data[3]); 
       $dt = $date[2].'-'.$date[1].'-'.$date[0]; 
       $dktid = mysql_query("select MAX(XDKTID) as maxid from xtempdockethdr"); 
       $maxid = mysql_fetch_array($dktid); 
       $max = $maxid['maxid'] +1; 
       $query = mysql_query("insert into xtempdockethdr (XCMPCD,XCLNTCD,XDKTNO,XCNSGCD,XDKTPUDATE,XDKTPUTIME,XDKTNOPKGS,XDKTMODLV,XDKTHTOCONCD,XDKTDCTVAL,XDKTDIMWT,XDKTACTWT,XUNIQUEID,XDKTID) VALUES ('".$data[0]."','".$data[1]."','".$num."','".$data[2]."','".$dt."','".$data[4]."','".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','".$data[9]."','".$data[10]."','".$data[11]."','".$max."')"); 
       $i++; 
      } 
     } 
     } 
    }  
} 
fclose($handle); 
header('Location:upload_docketentry.php'); 

回答

1
  1. 您需要您的代码后设置一个break;。 它会关闭第一个循环(foreach)并关闭。

  2. 在sql插入后添加continue 2;。 这将结束此循环并转到while循环的开始并继续工作。

    $handle = fopen($_FILES['upcsv']['tmp_name'], "r"); 
    $count = count(file($_FILES['upcsv']['tmp_name'])); 
    fgetcsv($handle, 1000, ","); 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) // **#1 point** 
    { 
        $clt = mysql_query("select MCLNTLKNOFLG,MCLNTDKTRNGFRM,MCLNTDKTRNGTO from mclientmst where MCLNTCD ='".$data[1]."'"); 
        if(mysql_num_rows($clt)>0) 
        {  
         $clts = mysql_fetch_array($clt); 
         if($clts['MCLNTLKNOFLG']==1) 
         { 
         $i=1 ; 
         foreach(range ($clts['MCLNTDKTRNGFRM'], $clts['MCLNTDKTRNGTO']) as $num) 
         { 
          $dkt = mysql_query("select XCMPCD from xdockethdr where XDKTNO ='$num'"); 
          $ndkt = mysql_query("select XCMPCD from xtempdockethdr where XDKTNO ='$num'"); 
          if(mysql_num_rows($dkt)==0 && mysql_num_rows($ndkt)==0) 
          { 
           $date = explode('/',$data[3]); 
           $dt = $date[2].'-'.$date[1].'-'.$date[0]; 
           $dktid = mysql_query("select MAX(XDKTID) as maxid from xtempdockethdr"); 
           $maxid = mysql_fetch_array($dktid); 
           $max = $maxid['maxid'] +1; 
           $query = mysql_query("insert into xtempdockethdr (XCMPCD,XCLNTCD,XDKTNO,XCNSGCD,XDKTPUDATE,XDKTPUTIME,XDKTNOPKGS,XDKTMODLV,XDKTHTOCONCD,XDKTDCTVAL,XDKTDIMWT,XDKTACTWT,XUNIQUEID,XDKTID) VALUES ('".$data[0]."','".$data[1]."','".$num."','".$data[2]."','".$dt."','".$data[4]."','".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','".$data[9]."','".$data[10]."','".$data[11]."','".$max."')"); 
           $i++; 
           // continue 2; // Goes to #1 
           // break; // Goes to #2 
          } 
         } // #2 point 
         var_dump(__LINE__); // This will executed if you place break operator 
         } 
        }  
    } 
    fclose($handle); 
    header('Location:upload_docketentry.php');