如何在php中上传CSV时包含逗号

时间:2014-10-30 07:17:15

标签: php mysql csv

我正在尝试上传mysql的值,我似乎有逗号的问题,它认为它是每列的结尾。或者我不知道如何解释它,但当我有多个逗号时,让我们说一个文本字段,它会转到下一列,依旧打破格式。

这是我的代码。我是新手,所以我希望解释会很好。

//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,",","'")); 

2 个答案:

答案 0 :(得分: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,",","'")); 

答案 1 :(得分:0)

首先,我想建议您,如果您的表数据包含逗号(,),那么您应该使用不同的分隔符(如制表符)导出CSV,并将列数据括在引号中。

然后你可以在fgetcsv函数的原型中看到你可以明确指定它看起来像这样的分隔符:

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

根据您的导出使用分隔符,然后使用您正在使用的相同代码。

导出时,可以在命令提示符中使用以下命令来使用自定义分隔符

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

在phpmyadmin中也可以指定自定义分隔符。