【问题标题】:PHP import csv NULL for empty colPHP为空col导入csv NULL
【发布时间】:2021-12-02 10:44:59
【问题描述】:
function  upload_excel1 (){
    global $conn; 
    $filename=$_FILES["file"]["tmp_name"];      

    if($_FILES["file"]["size"] > 0)
    {
       ini_set("auto_detect_line_endings", true);
       $file = fopen($filename, "r");
       $flag = true;
       $row = 1;

       while (($getData = fgetcsv($file, 10000, ";")) !== FALSE)
        {
           if($flag) { $flag = false; continue; }

           $sql = "INSERT into analisi (id, id_profili, id_orizzonte, rap_prova,campione,scheletro,sabbia, limo, argilla, tessitura, reazione, ec12, calcare_tot, calcare_att, sostanza_org, azoto_tot, fosforo_p, calcio_mg, magnesio_mg, potassio_mg, sodio_mg, csc_meq, calcio_meq, magnesio_meq, potassio_meq, sodio_meq, saturazione_bas, rapporto_mgk, rapporto_cak, rapporto_camg) 
           values (DEFAULT,'".pg_escape_string($getData[0])."','".pg_escape_string(($getData[1]))."','".pg_escape_string(($getData[2]))."','".pg_escape_string(($getData[3]))."','".pg_escape_string(($getData[4]))."','".pg_escape_string(($getData[5]))."','".pg_escape_string(($getData[6]))."','".pg_escape_string(($getData[7]))."','".pg_escape_string(($getData[8]))."','".pg_escape_string(($getData[9]))."','".pg_escape_string(($getData[10]))."','".pg_escape_string(($getData[11]))."','".pg_escape_string(($getData[12]))."','".pg_escape_string(($getData[13]))."','".pg_escape_string(($getData[14]))."','".pg_escape_string(($getData[15]))."','".pg_escape_string(($getData[16]))."','".pg_escape_string(($getData[17]))."','".pg_escape_string(($getData[18]))."','".pg_escape_string(($getData[19]))."','".pg_escape_string(($getData[20]))."','".pg_escape_string(($getData[21]))."','".pg_escape_string(($getData[22]))."','".pg_escape_string(($getData[23]))."','".pg_escape_string(($getData[24]))."','".pg_escape_string(($getData[25]))."','".pg_escape_string(($getData[26]))."','".pg_escape_string(($getData[27]))."','".pg_escape_string(($getData[28]))."')";
           $stmt = $conn->prepare($sql);
           $stmt->execute();
       }
           if(!isset($stmt))
           {
               echo "<script type=\"text/javascript\">
                       alert(\"Invalid File:Please Upload CSV File.\");
                       window.location = \"index.php\"
                     </script>";   
           }
           else {
               echo "<script type=\"text/javascript\">
                   alert(\"CSV File has been successfully Imported.\");
                   window.location = \"index.php\"
               </script>"; 
           }

        
        fclose($file); 
        ini_set("auto_detect_line_endings", false);
    }
     }

你好 我正在使用这个脚本来加载一个 csv 文件,它工作得很好,除非数字字段没有填写。如何为文件的未填充字段输入 NULL 值?

【问题讨论】:

    标签: php fgetcsv


    【解决方案1】:

    现在可以了:)

    if(!empty($getData[15])) { $getData[28]= "'$getData[28]'"; }else{ $getData[28]= 'NULL';}
                   
       
                   $sql = "INSERT into analisi (id, id_profili, id_orizzonte, rap_prova,campione,scheletro,sabbia, limo, argilla, tessitura, reazione, ec12, calcare_tot, calcare_att, sostanza_org, azoto_tot, fosforo_p, calcio_mg, magnesio_mg, potassio_mg, sodio_mg, csc_meq, calcio_meq, magnesio_meq, potassio_meq, sodio_meq, saturazione_bas, rapporto_mgk, rapporto_cak, rapporto_camg) 
                   values (DEFAULT,$getData[0],$getData[1],$getData[2],$getData[3],$getData[4],$getData[5],$getData[6],$getData[7],$getData[8],$getData[9],$getData[10],$getData[11],$getData[12],$getData[13],$getData[14],$getData[15],$getData[16],$getData[17],$getData[18],$getData[19],$getData[20],$getData[21],$getData[22],$getData[23],$getData[24],$getData[25],$getData[26],$getData[27],$getData[28])";
             
    

    【讨论】:

      【解决方案2】:

      如果我错了,请纠正我,但我认为空列在读取 csv 文件时应该返回一个空字符串,在这种情况下,您可以使用 PHP 中的方法,如 isset 或 empty,如果您想分配 null 值只是使用单行 if 语句,如

      如果 $getData[0] 为空则返回 null 否则返回 $getData[0]

      empty($getData[0]) ? null : pg_escape_string($getData[0])
      

      isset($getData[0]) ? null : pg_escape_string($getData[0])
      

      【讨论】:

      • ` 代码 if($flag) { $flag = false;继续; } if (empty(pg_escape_string($getData[13])) ? null : pg_escape_string($getData[13])); ` 数字类型的无效输入语法:""
      • 嗯。是的,我的错我会编辑我的答案。在哪里检查 pg_escpae_string 而不是 getData[13]。我会更新我的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2020-12-26
      • 2013-03-27
      • 2016-08-14
      相关资源
      最近更新 更多