CSV上传到PHP的MYSQL

时间:2016-03-30 08:57:13

标签: php mysql csv import overwrite

您好我目前有这个php文件,它会在每次触发时将csv数据导入mysql数据库但是我希望它覆盖数据库中的当前数据,而不是每次触发时都不断添加它。这是文件减去我的详细信息:

<?php

//database connection details
$connect = mysql_connect('mydetails','mydetails','mydetails');

if (!$connect) {
 die('Could not connect to MySQL: ' . mysql_error());
}

//your database name
$cid =mysql_select_db('mydetails',$connect);

// path where your CSV file is located
define('CSV_PATH','myfile location');

// Name of your CSV file
$csv_file = CSV_PATH . "my file"; 


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

 $col1 = $col[0];
 $col2 = $col[1];
 $col3 = $col[2];
 $col4 = $col[3];

// SQL Query to insert data into DataBase
$query = "INSERT INTO     orders(OrderNumber,OrderCustomer,OrderReqdQty,OrderStatus)     VALUES('".$col1."','".$col2."','".$col3."','".$col4."')";
$s     = mysql_query($query, $connect );
  }
    fclose($handle);
}

echo "File data successfully imported to database!!";
mysql_close($connect);
?>

1 个答案:

答案 0 :(得分:1)

您似乎拥有独特的OrderNumber。向表中添加正确的密钥并使用ON DUPLICATE UPDATE语法。

有关此主题的更多信息,请访问:http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

---编辑--- 首先,您需要在表格中添加正确的唯一键:

ALTER TABLE orders add UNIQUE(OrderNumber);

此查询应添加唯一键,从现在开始,不存在重复的OrderNumber。如果数据库中有任何内容,此查询将在您的脸上抛出正确的错误消息。如果您只是尝试使用相同的OrderNumber添加另一个条目,您也会受到错误消息的欢迎。

现在用以下内容修改脚本:

INSERT INTO orders(OrderNumber, OrderCustomer, OrderReqdQty, OrderStatus) VALUES('".$col1."','".$col2."','".$col3."','".$col4."') ON DUPLICATE KEY UPDATE OrderCustomer='".$col2."', OrderReqdQty='".$col3."', OrderStatus='".$col4."'";

然后每次在表中找到OrderNumber而不是抛出错误时,就会在这一行上执行UPDATE。