我正在导入CSV并在数据库中保存值,然后在php页面中显示。
CSV
php页面
要求:
现在当我导入另一个CSV时,如果第一列[AWB]的值相同[已存在于DB],那么我想要更新第二列CSV。
问题:
但是现在,它不是导入而只是跳过....
if(isset($_POST["Import"])){
$filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
$i=0;
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
{
$getData = array_map("utf8_encode", $getData);
if($i==0){$i++;continue;}
$sql = "INSERT into do_order (tracking_id,
order_id
)
values ('".mysqli_real_escape_string($conn , $getData[0])."',
'".mysqli_real_escape_string($conn , $getData[1])."'
)";
// print $sql;
// die();
$result=$db_handle->executeUpdate($sql);
// print_r($db_handle->errorInfo());
if(!isset($result))
{
echo "";
}
else {
echo "";
}
$i++;
}
fclose($file);
}
}
echo "";
答案 0 :(得分:3)
有两种方法可以做到这一点。
您可以awb
检查是否存在SELECT * FROM do_order WHERE tracking_id='puthereyourtrackingvaluefromcvs'
(跟踪ID),以及行数>为0,然后执行UPDATE do_order SET order_id = 'PutYourNewOrderIdFromCvs' WHERE tracking_id='puthereyourtrackingvaluefromcvs'
或者您可以通过执行
更改一次表格的架构ALTER TABLE do_order ADD UNIQUE (`tracking_id`);
然后在每个插入
$sql = "INSERT into do_order (tracking_id,order_id) values
('".mysqli_real_escape_string($conn , $getData[0])."','".
mysqli_real_escape_string($conn , $getData[1])."')
ON DUPLICATE KEY UPDATE order_id = '".mysqli_real_escape_string($conn , $getData[1])."'";
重要提示请勿使用mysqli *,即使必须,请使用prepared statements