2016-01-22 47 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