【发布时间】:2016-12-13 12:49:18
【问题描述】:
我有一个包含 31 列和 24 行的 CSV 文件。我需要fgetcsv(或者可能是其他解决方案)传入CSV并逐列获取数据。我有一个解决方案:
// { ?
for ($col=1; $col<=32; $col++) {
while ($data = fgetcsv($read, max, ";")) {
$row[] = $data[$col];
}
print_r($row);
//... in the line behind i have sql query to insert data in base.
}
unset($row);
}
for 循环正在工作,但 $data[$col] 仅从 CSV 的第一列获取数据,当 $col 为 2、3、4 时,它不会从 $data[$col] 获取数据, ...,31。
我在哪里犯了错误,问题是什么?代码对我来说看起来不错,但我认为我对 fgetcsv 函数一无所知。
max 是 CSV 的文件大小,fgetcsv 就像文件的最大大小一样。无论fgetcsv 中有什么内容,他们只会看到第一列,而不是每次$col 更改时都循环。
insert = "INSERT INTO xxxx (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24) VALUES ('$row[1]','$row[2]','$row[3]','$row[4]','$row[5]','$row[6]','$row[7]','$row[8]' '$row[9]','$row[10]','$row[11]','$row[12]','$row[13]','$row[14]','$row[15]','$row[16]','$row[17]','$row[18]','$row[19]','$row[20]','$row[21]','$row[22]','$row[23]','$row[24]')"
【问题讨论】:
-
fgetcsv($read,max,";") - max 的值是多少?
-
数据是什么样的?
-
请发布数据示例。您可以在
while大括号打开后使用:die('<pre>'.print_r($data, 1));。 -
fgetcsv($read, max, ";")这合法吗?max是什么? -
fgetcsv 获取一行,而不是一列。