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

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

但问题是我的数组中有数百个项目。如果我使用这段代码作为循环,这将对数据库产生数百次点击。有人有更简单的解决方案吗?

最佳答案

您可能应该将数组直接加载到某种临时表中。您可以使用单独的插入语句或使用load data infile或其他一些批量加载机制来完成此操作。

然后要忽略该记录,请在 rtusers(mission) 上定义唯一索引并使用:

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

重复键部分不执行任何操作。它只是忽略任何重复的记录。

关于php mysql - 如果不存在则插入项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936734/

相关文章:

php - 在Elasticsearch中设置大小不受限制的值

php - 如何在 <?php ?> 中编写 html 代码,我想在 PHP 脚本中编写 html 代码,以便它可以从后端回显

mysql - 如果 id 不为空,则对 mysql 进行分组

C++:将 SQL 查询的结果集转换为 JSON

php - Excel日期在mysql中更改为不同的日期

javascript - 如何在此 ParamQuery Grid Javascript 中使用 PHP 集成 Mysql 数据

php - SQLSTATE[42000] 聚合函数错误

php - 处理具有相同错误号的 Mysql 错误

php - 如何限制 Laravel 中多对多关系的急切加载?

php - 如何在执行的 phar 中获取 phar 存档元数据?