php mysql - 如果不存在则插入项目

时间:2016-01-22 00:03:30

标签: 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;

但问题是我在数组中有数百个项目。如果我将此代码用作循环,则会对数据库进行数百次点击。有没有人有更简单的解决方案?

2 个答案:

答案 0 :(得分: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部分没有做任何事情。它只是忽略了任何重复的记录。

答案 1 :(得分:0)

创建一个包含新数字名称new_users的表,然后执行此查询:

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