2009-06-11 31 views
1

我從JSON對象中獲取字符串數組。我想將這些字符串保存在數據庫中,但前提是它們不在那裏。將數據庫中已有內容與我即將進入的內容進行比較並排除匹配的最佳方法是什麼?如何僅在記錄尚不存在時才添加到MySQL表中?

我正在使用PHP和MySQL。

+0

[`INSERT ... ON DUPLICATE KEY UPDATE`](http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html)另請參閱:[「INSERT IGNORE」 vs「INSERT ... ON DUPLICATE KEY UPDATE」](http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update) – troelskn 2009-06-11 18:04:18

回答

5

由於你的描述是想,如果已經存在的字符串先不談記錄一下,你可能想什麼IGNORE修飾符INSERT(即你做INSERT IGNORE ...)。如果找到重複密鑰,這將使您的查詢不會執行任何操作。當然,這需要你插入的字符串字段有唯一的鍵。

2

在MySql中,您可以使用帶有「ignore」選項的插入語句,如果其唯一字段與現有行的唯一字段匹配,則不會插入行。該表格必須包含相關字段的唯一性約束。

0

很簡單的例子:

您的表:用戶 您的字段:users_id,USER_NAME,ZIP_CODE,創建 唯一索引:USER_NAME

INSERT INTO用戶(USER_NAME,ZIP_CODE,創建) VALUES ( 'joe',75034,'2009-06-11') ON DUPLICATE KEY UPDATE users_id = LAST_INSERT_ID(id)

user_name具有唯一索引;所以,你不能多次添加它。當你使用上面的SQL時,它會在第一次加入。第二次,它實際上不會插入。設置重複鍵的方式,你現在可以用PHP從mysql中獲取最後一個insert id,並且知道users_id是一個真正的插入還是重複的。

相關問題