我在這裏遇到了一個奇怪的問題。我有一個腳本,基本上使用php中的fgetcsv()
將CSV文件導入數據庫。這樣做完全沒有問題,我可以使用MySQL語法ON DUPLICATE KEY UPDATE
(我絕不是MySQL專家,因此我在這裏問)來更新舊條目。PHP MYSQL導入CSV,然後比較並刪除多餘的條目
這裏是那部分代碼:
$handle = fopen($file,"r");
fgetcsv($handle, 1000, ",");//skip first row since they are headers
while(($fileop = fgetcsv($handle, 1000, ",")) !== false) //read line by line into $fileop
{
//read array values into vars
$item1 = $fileop[0];
$item2 = $fileop[1];
$key = $fileop[2];
// and a couple more
// now INSERT/UPDATE data in MySQL table
$sql = mysql_query("INSERT INTO table (item1,item2,key)
VALUES ('$item1','$item2','$key')
ON DUPLICATE KEY UPDATE item1='$item1',item2='$item2'");
}
這一切工作正常。我所堅持的是,一些條目可能已經從實際的CSV中刪除(因爲在密鑰中可能不再存在)。我想要做的是從MySQL表中刪除不再存在於CSV中的條目。
含義如果$key
已從CSV中消失,也會刪除數據庫表中的該行。我想我會在MySQL表上運行插入/更新查詢之前做到這一點?
我會很感激任何幫助球員。
我明白你想法背後的邏輯。你可以重複一遍,並告訴我代碼是怎麼樣的?我是新來的PHP和寫這樣的擴展代碼,對我來說是新鮮的。 – privilegue 2012-03-26 13:11:29
好吧,它不應該那麼難,所以我很猶豫,只是給你的代碼,因爲你可能只是剪切和粘貼它,我現在沒有真正的測試方法和/或時間。但很快。被告知。你應該用它來理解應該發生什麼,而不是複製它! – Nanne 2012-03-26 13:17:04
謝謝!我不想複製/粘貼我想深入瞭解它。我已經瞭解了我所知道的所有內容,而不是從人們看到的語法描述和例子。我學習最簡單的方法是通過做/看例子,然後複製並擴展我所學到的東西。 – privilegue 2012-03-26 13:20:09