2011-08-16 58 views
1

您好,我是PHP和MySQL的新手。如果MySQL數據庫表不包含具有特定ID的行,請將數據添加到表中

我想知道如何使用PHP來檢查我的mysql數據庫中的表是否包含具有特定ID的行,並且如果不將數據添加到表中。

例如,

表結構:(表名稱:記錄) ID,DATA

我有ID = 123和DATA =你好存儲在PHP代碼的變量,我怎樣才能使用php sql查詢是否存在數據使用表中的ID進行檢查,如果沒有,則將ID和DATA插入表中。

我希望你能理解。

P/S我已連接的PHP腳本到數據庫

回答

3

充分利用ID UNIQUE

CREATE TABLE my_table(ID INT UNSIGNED UNIQUE... 

然後使用INSERT IGNORE

INSERT IGNORE INTO my_table(ID, DATA) VALUES(some_id, some_data) 
+0

這是一個很好的建議,但你只能添加一個'UNIQUE'約束,如果所有選定的領域已經獨樹一幟,否則給你一個錯誤。在我正在研究的表格中,已經有一些重複條目(出於某種未知原因),我試圖阻止進一步的重複。 –

+0

對於任何想知道的人,'INSERT IGNORE'都會將任何MySQL錯誤更改爲警告,以便您可以繼續運行長腳本而不會中斷它。然後您可以使用命令「SHOW WARNINGS」查看警告。 –

0

如果你的ID是唯一的關鍵,那麼你可以直接嘗試插入行。如果該ID已經在表中,數據庫將不允許您插入它並返回錯誤。否則,您必須首先運行SELECT語句以查看該表是否存在於您的表中,並且如果不插入它。

而且這個線程會幫助你很多,我認爲How to 'insert if not exists' in MySQL?

2
IF NOT EXISTS(SELECT 1 FROM structure WHERE ID = <yourid>) 
    INSERT INTO structure (ID, DATA) VALUES(<yourid>, <yourdata>) 
1

另一種選擇:

INSERT INTO record(id, `data`) SELECT 123, 'hello' 
FROM new_table WHERE NOT EXISTS (SELECT id from record where id = 123); 
相關問題