我这里有这段代码,如果行前面有逗号,则不会导入数据。它表示该列中的空值,但我的代码无法识别它,因此根本不会导入任何数据。 任何想法如何解决这个问题? 提前谢谢!
<?php
include "config.php";
if ($_FILES[csv][size] > 0) {
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
do {
if ($data[0]) {
mysql_query("INSERT INTO norse5_proov (osakond, soetusaasta, it_number, tooteruhm, mudeli_nimetus, sn, riigivara_nr, inventaari_nr, maja, ruum, vastutaja, markus, kasutajanimi) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'".addslashes($data[9])."',
'".addslashes($data[10])."',
'".addslashes($data[11])."',
'".addslashes($_SESSION['user'])."'
)
") or die(mysql_error());
}
} while ($data = fgetcsv($handle,1000,",","'"));
header('Location:insert.php?success=1'); die;
}
?>
答案 0 :(得分:0)
您需要更改
if ($data[0]) {
到
if (!empty($data)) {
基本上,它目前正在做的是检查第一列中是否有数据,如果没有,则忽略该行,如果将其更改为建议,它将检查整个数据是否存在行,如果有,那么它将导入它,否则它将跳过。
答案 1 :(得分:0)
如果您必须首先检查您的状况,请不要使用do while循环,而是使用正常的while循环。这样你根本不必检查你的数据!
while ($data = fgetcsv($handle,1000,",","'"))
{
mysql_query("INSERT INTO norse5_proov (osakond, soetusaasta, it_number, tooteruhm, mudeli_nimetus, sn, riigivara_nr, inventaari_nr, maja, ruum, vastutaja, markus, kasutajanimi) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'".addslashes($data[9])."',
'".addslashes($data[10])."',
'".addslashes($data[11])."',
'".addslashes($_SESSION['user'])."'
)
") or die(mysql_error());
}