导入 Excel 文件时更新重复条目 - php mysql

Update on dulipcate entry while Import Excel file - php mysql

我需要在 import excel file 时检查值是否插入数据库,如果它已经在数据库中有值那么它应该得到更新。

下面是producttab table数据库中的值

prdid | prdname 
00A   |  prd1
00B   |  prd2
00C   |  prd3
00D   |  prd4

下面是EXCELFILE数据

prdid | prdname 
00A   |  prdnew
00B   |  prd2new
00E   |  prd8
00H   |  prd9

因此,如果我上传以上 excel 文件,

00A , 00B 应该在 producttab table 中得到更新,因为它们已经在那里了...但是 00E,00H 应该得到插入

*以下是我尝试过的,值正在正确插入 只有更新没有发生,我的意思是 IF..ELSE 条件是完美的,只有更新不正确 *

if(isset($_POST["Upload"]))
{
    $fileinfo = pathinfo($_FILES["uploadFile"]["name"]);

    $filetype = $_FILES["uploadFile"]["type"];
    $remark = NULL;

    //Validate File Type
    if(strtolower(trim($fileinfo["extension"])) != "csv")
    {
        $_SESSION['msg_r'] = "Please select CSV file";
        header("location:importfile.php");
        exit;
    }
    else
    {
        $file_path = $_FILES["uploadFile"]["tmp_name"];
    }

$row = 0;

$tempFileName = time().".csv";

if ( is_uploaded_file( $file_path ) ) {
    $fileCopied = copy( $file_path , $tempFileName);


if (($handle = fopen($tempFileName, "r")) !== FALSE) {
   fgetcsv($handle);   
   while (($data = fgetcsv($handle, 6000, ",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
          $col[$c] = $data[$c];
        }

$col1 = $col[0]; // prdid
$col2 = $col[1]; // prdname   

$sql = "SELECT prdid FROM producttab WHERE prdid = '".$col1."' ";
$query = db_query($sql);
$pfetech = db_fetch($query);

// ABOVE select QUERY IS PERFECT , it taking me to if conditions 

if($col1 == $pfetech['prdid']){

  // only below update not happening 

    $sqlup = "UPDATE producttab 
              SET prdid = ".$pfetech['prdid'].",
                  prdname = ".$col2."  ";
    $sqlup .= " WHERE prdid = ".$pfetech['prdid']." ";    
    $resultsqlupdate = mysql_query($sqlup);

}else{    

$query = "INSERT INTO producttab(prdid,prdname) VALUES('".$col1."','".$col2.")"; 
$s = mysql_query($query);

}


 }
    fclose($handle);
}
    echo "<center>File data imported to database!!</center>";                            
 }
} 

} 

下面是更新查询的print/echo,

update producttab set prdname='prdnew' WHERE prdid='00A'
update producttab set prdname='prd2new' WHERE prdid='00B' 

prdname 的值根据 excel 文件正确显示....只有更新没有发生....

您可以使用存在查询来检查数据库中是否存在,以下是查询

 select  exists(select 1 from producttab where prdid='".$col1."');

如果它退出,它会给你 1,如果不退出,它会给你 0 然后在 if else 条件下做进一步的插入或更新

并且只设置一件事而不是像这样的其他事情

  "UPDATE producttab 
          SET  prdname = ".$col2."
  $sqlup .= " WHERE prdid = ".$pfetech['prdid']." "; 

哦抱歉,您需要更新 prdname 而不是 prdid。 编辑了我的答案

ps。 你应该为此使用 mysql import from csv query 这里是 link 寻求帮助 http://www.mysqltutorial.org/import-csv-file-mysql-table/