从 Excel 导入将值更新为零


Updating Values as Zero from Excel Import

我正在使用以下代码将csv导入mysql。

 if($_POST['sform'] == "1")
{
     $fname = $_FILES['upload']['name'];        
     $chk_ext = explode(".",$fname);        
     if(strtolower($chk_ext[1]) == "csv")
     { 
        $filename = $_FILES['upload']['tmp_name'];
        $row = 1;
        if (($handle = fopen($filename, "r")) !== FALSE)
        {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
              {
                $row++;
                $data_entries[] = $data ;
              }
              fclose($handle);
         }
         foreach($data_entries as $line)
         {
              $sql = "INSERT into testposts(ID,UID,title,tags,desc) values('','$data[0]','$data[1]','$data[2]','$data[3]')";
$conn->execute($sql);
          $conn->execute($line);
         }
         $msg = "Successfully Imported";
     }
     else
     {
         $error = "Invalid File";
     }   
}

当我尝试更新时,所有值都更新为 0

我的 CSV 文件如下(示例)

1,title,tags,send2

不包括PID值,因为它是自动递增的

所以我尝试了我的第二个变体

if($_POST['sform'] == "1")
{
     $fname = $_FILES['upload']['name'];        
     $chk_ext = explode(".",$fname);        
     if(strtolower($chk_ext[1]) == "csv")
     { 
 $filename = $_FILES['upload']['tmp_name'];
     $handle = fopen($filename, "r");
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
     {
              $sql = "INSERT into testposts(ID,UID,title,tags,desc) values('','$data[0]','$data[1]','$data[2]','$data[3]')";
          mysql_query($sql) or die(mysql_error());
          //$conn->execute($sql);
         }
         $msg = "Successfully Imported";
     }
     else
     {
         $error = "Invalid File";
     }   
}

在我的第二个代码中,它按预期正确上传了值,但插入了两次。

任何帮助将不胜感激,谢谢

我很

惊讶第二个版本有效:

$sql = "INSERT into testposts(ID,UID,title,tags,desc) values('','$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

您的值多于列名。有$data[4]吗?

如果启用了警告,则数据可能包含 php 警告,这些警告可能包含'字符,从而中断查询。

您应该真正切换到PDO/预准备语句,以避免SQL注入问题和此类错误。