2016-03-30 42 views
0

嗨我目前有這個PHP文件,每次觸發時都會將csv數據導入到mysql數據庫中,但是我希望它覆蓋數據庫中的當前數據,而不是每次觸發時添加它。這裏是文件減我的細節:用PHP上傳到MYSQL的CSV

<?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); 
?> 
+0

TODO: 1.檢查'OrderNumber'如果它存在於你的數據庫 2.如果存在的話做一個UPDATE語句 3.如果不存在這樣做和INSERT語句 –

+0

<插入強制**不使用mysql驅動程序,它的死**消息在這裏> – DevDonkey

回答

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."'"; 

然後每次訂單號碼是表中發現的,而不是拋出一個錯誤,就會出現這個很行執行UPDATE。

+0

我對此很新,你會介意在上面的代碼中展示如何實現這一點。我有正確的數據庫表,因爲PHP文件正在工作,但就像我說它只是不斷添加/複製信息而不覆蓋它。預先感謝大家:) – bigmacca1980