在php中上载CSV时如何包含逗号
我试图上传mysql的值,我似乎有一个逗号的问题,它认为这是每列的结束。或者我不知道如何解释它,但当我在一个文本字段中有多个逗号时,它会转到下一列,从而破坏格式 这是我的密码。我是新来的,所以我希望能有一个好的解释在php中上载CSV时如何包含逗号,php,mysql,csv,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 dat
//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,",","'"));
试试这个:
//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,",","'"));
首先,我想建议您,如果表数据包含逗号(,),那么应该使用不同的分隔符(如制表符)导出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中,还可以指定自定义分隔符