2016-01-22 43 views
0

我有一個PHP數組,我想從這個數組中插入不在MySQL表中的項目。搜索後,我可以做這個項目使用下面的代碼php mysql - 插入項目如果不存在

INSERT INTO `rtusers` (`Status`, `MSISDN`) 
SELECT * FROM (SELECT 0, '966111111111') AS tmp 
WHERE NOT EXISTS (
SELECT `MSISDN` FROM rtusers 
WHERE MSISDN = '966111111111') LIMIT 1; 

但問題是我有數百個項目在數組中。如果我使用這個代碼作爲循環,這將使數百個命中數據庫。有人有更簡單的解決方案嗎?

回答

1

您應該直接將數組加載到某種臨時表中。您可以使用單個插入語句或使用load data infile或其他一些批量加載機制來完成此操作。

然後忽略了記錄,在rtusers(mission)和使用定義唯一索引:

insert into rtusers(status, mission) 
    select status, mission 
    from rtusers_staging 
    on duplicate key update mission = values(mission); 

on duplicate key部分沒有做任何事情。它只是忽略任何重複的記錄。

0

創建新號碼的名字NEW_USERS一個表,然後執行此查詢:

INSERT INTO `rtusers` (`Status`, `MSISDN`) 
SELECT Status, MSISDN from new_users 
WHERE MSISDN NOT IN (SELECT MSISDN FROM rtusers); 
+0

感謝,這是一個很好的解決方案。 – ahmedbashaa