2012-08-27 58 views
3

我想寫一個查詢插入一個有效的方式使用'implode'許多值(說1000)的數組。這是代碼。我的查詢將記錄數組插入data表中。我想更改查詢,以便它將更新記錄(如果存在),否則它將插入記錄。如果一條記錄存在,我可以更新一條記錄嗎?如果不存在,可以在一條查詢中插入多條記錄?

+0

重複:http://stackoverflow.com/questions/1218905/how-do-i-update-if-exists-insert-if-not-aka-upsert-or-merge-in-mysql – Prasanth

+0

有* *不再支持** mysql_ *'函數,它們是[**官方不推薦使用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再維護**,並將[ **刪除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)更新您的代碼,以確保您的項目未來的功能。 – TRiG

回答

9

你可能想要的是一個「ON DUPLICATE KEY」版本,它實際上允許你引用輸入的數據。

INSERT INTO data (name, age, since, description) VALUES 
    ("Bob", 23, "01-01-1980", "friend"), 
    ("Bill", 33, "03-01-1980", "tall"), 
    ("Jane", 43, "12-01-1980", "thin") 
ON DUPLICATE KEY UPDATE age=VALUES(age), 
         since=VALUES(since), 
         description=VALUES(description); 

希望不言自明嗎?


$sql = array(); 
foreach($return as $key=>$row) { 
    $sql[] = '("'.mysql_real_escape_string($row['fullname']).'", '.$row['age'].','.$row['since'].','.'"'.mysql_real_escape_string($row['description']).'")'; 
} 
mysql_query('INSERT INTO data (name, age, since, description) VALUES '.implode(',', $sql). ' ON DUPLICATE KEY UPDATE age=VALUES(age), since=VALUES(since), description=VALUES(description);'); 

編輯,添加到用戶的代碼本的上方。

+0

你可以請修改我的代碼,這樣它會使用implode插入和更新我想要的東西,如果存在? @Robbie – user1518659

+1

完成。你是否希望我寫下其他應用程序? – Robbie

+0

很酷..謝謝..sry干擾太多..我從來沒有想過在內爆使用DUPLICATE KEY .. @ Robbie – user1518659

相關問題