我正在尝试上传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,",","'"));
答案 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中也可以指定自定义分隔符。