PHP CSV文件导入不导入数据,如果有'


PHP CSV file import does not import data if there's empty value

这里有一段代码如果行前有逗号,它不会导入数据。它表示该列中的空值,但我的代码无法识别它,因此根本没有导入任何数据。有什么好办法吗?提前感谢!

    <?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; 
} 
?> 

你需要改变

if ($data[0]) { 

 if (!empty($data)) {

基本上,它现在正在做的是检查第一列是否有数据,如果没有,它就忽略这行,如果你把它改成建议的,它会检查整行是否有数据,如果有,它会导入它,否则它会跳过。

如果你必须先检查你的条件,不要使用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()); 
}