2014-10-30 42 views
0

我正嘗試上傳mysql的值,而且我似乎對逗號有問題,它認爲它是每列的結尾。或者我不知道如何解釋它,但是當我有多個逗號讓我們說一個文本字段,它會轉到下一列,並打破格式。如何在php中上傳CSV時包含逗號

這是我的代碼。我對此很感興趣,所以我希望能有一個解釋。

//get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
     if ($data[0]) { 
      mysql_query("INSERT INTO inventory (prod_brand, prod_name, prod_category, prod_price, prod_desc, prod_quantity) VALUES 
       ( 
        '".addslashes($data[0])."', 
        '".addslashes($data[1])."', 
        '".addslashes($data[2])."', 
        '".addslashes($data[3])."', 
        '".addslashes($data[4])."', 
        '".addslashes($data[5])."' 
       ) 
      "); 
     } 
    } while ($data = fgetcsv($handle,1000,",","'")); 

回答

0

試試這個:

//get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
     if ($data[0]) { 
      mysql_query("INSERT INTO inventory (prod_brand, prod_name, prod_category, prod_price, prod_desc, prod_quantity) VALUES 
       ( 
        '".addslashes($data[0]).",', 
        '".addslashes($data[1]).",', 
        '".addslashes($data[2]).",', 
        '".addslashes($data[3]).",', 
        '".addslashes($data[4]).",', 
        '".addslashes($data[5])."' 
       ) 
      "); 
     } 
    } while ($data = fgetcsv($handle,1000,",","'")); 
0

所有我想建議你,如果你的表數據包含逗號(,),那麼你應該嘗試不同的分隔符狀突片導出CSV,並附列第一數據在引號中。根據您的出口

array fgetcsv (resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]]]) 

使用的分隔符,然後使用您正在使用相同的代碼:

那麼您可以在fgetcsv函數的原型看到,你可以明確指定它看起來像這樣的分隔符。

當您導出,你可以在命令提示符下使用下面的命令來使用自定義定界符

SELECT col1, col2 
FROM table_name 
INTO OUTFILE '/tmp/table_name.csv' 
FIELDS TERMINATED BY '\t' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 

在phpMyAdmin也可以指定自定義的分隔符。