如果第一列具有相同的值,则更新第二列

时间:2018-03-15 07:45:14

标签: php

我正在导入CSV并在数据库中保存值,然后在php页面中显示。

CSV

enter image description here

php页面

enter image description here

要求

现在当我导入另一个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 "";

1 个答案:

答案 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