2014-07-24 26 views
0

我已經成功從csv中獲取數據到數據庫中,但由於某些原因,查詢產生的結果與csv中列數相同的結果相同。CSV數據庫輸入導致每列一行

<?php 

$host="localhost"; 
$user="general"; 
$pass="gretna22607"; 
$db="general"; 
$con=mysqli_connect($host, $user, $pass) or die ('Error connecting to mysql' . mysqli__error()); 
mysqli_select_db($con,$db) or die ('Error connecting to database' . mysqli__error()); 
$empty="TRUNCATE csvimport"; 
mysqli_query($con,$empty); 

$csvdata = file_get_contents('http://www.overclockers.co.uk/productfeed/b2b_cs312.csv'); 

$csv_file="ocuk.csv"; 

if (($getfile = fopen($csv_file, "r")) !== FALSE) 
    { 
     while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) 
      { 
       $num = count($data); 
       for ($a=0; $a < $num; $a++) 
        { 
         $results=$data; 
         $str = implode(",", $results); 
         $slice = explode(",", $str); 
         $col1 = $slice[0]; 
         $col2 = $slice[1]; 
         $col3 = $slice[2]; 
              $col4 = $slice[3]; 
              $col5 = $slice[4]; 
              $col6 = $slice[5]; 
              $col7 = $slice[6]; 

         // SQL Query to insert data into DataBase 

         //$query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."')".";"; 
         //$query = "INSERT INTO csvimport VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."','','','')".";"; 
         //mysqli_query($con,$query); 
        } 
       $query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."')".";"; 
           mysqli_query($con,$query); 
      } 
    } 
fclose($csv_file); 
mysqli_close(); 

?> 

例如

,如果我回應查詢

第一個會是這樣

insert into csvimport ('test','test','test','','','',''); 
insert into csvimport ('test2','test2','test2','','','',''); 
insert into csvimport ('test3','test3','test3','','','',''); 
insert into csvimport ('test4','test4','test4','','','',''); 
insert into csvimport ('test','test','test','','','',''); 
insert into csvimport ('test','test','test','','','',''); 
insert into csvimport ('test2','test2','test2','','','',''); 
insert into csvimport ('test2','test2','test2','','','',''); 

我希望它只是採取CSV的每一行一次,其輸入到所有7列的數據庫中

回答

1

刪除該行:

$data = fgetcsv($getfile, 1000, ","); 

然後將這些行:

$query = "INSERT INTO csvimport (tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$co$ 
//$query = "INSERT INTO csvimport VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."','".$col6."','".$col7."','','','')".";"; 
mysqli_query($con,$query); 

for loop

+0

之外一旦它運行完畢生病後的更新,問題一個固定的,但它已經推出了一個新的問題:( –

+0

都能跟得上它仍然是這樣做,而不是一個接一個地在重新運行它們之前現在正在運行其他語句,實際上它似乎進入了無限循環 –

+0

@AndrewCrawford我不知道你的意思是通過運行其他語句...... – raidenace