在导入Excel文件时更新duulcate条目 – php mysql

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

以下是数据库中producttab表的值

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

下面是EXCEL FILE数据

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

所以,如果我上传Excel文件然后,

00A,00B应该在producttab表中得到UPDATE,因为它们已经存在了…但是00E,00H应该得到插入

*下面是我已经试过,价值是越来越插入正确只是更新不是发生,我的意思是IF..ELSE条件是完美的,只有UPDATE是不正确的*

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

下面是UPDATE查询的打印/回显,

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

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

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

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

如果它退出,它将给出1;如果不存在,则给出0,否则在if条件下进行进一步的插入或更新

只有一件事情不是这样的

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

哦,对不起,你需要更新prdname不prdid。 编辑我的答案

PS。 你应该从csv查询使用mysql导入这里是链接帮助http://www.mysqltutorial.org/import-csv-file-mysql-table/