php mysql插入查询,如果已经存在则不会插入

9lowa7mx  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(410)

很不幸,我做了一些研究,没有发现任何我能做的工作,我认为这是因为我没有理解我所看到的示例中的mysql构造。
我要做的是运行一个insert查询,检查3个特定列中的值以确保它们不存在,然后insert,否则什么都不做。
我的表非常基本:id(int11)、user(varchar(45))、label(varchar(255))、agent(varchar(255))、empid(varchar(10))。
我的id是我的主id,具有自动递增功能,下面是我当前的代码,用于插入,但没有对重复项的处理:

$i = 0;
foreach ($agents as $ag){
    $sql = mysql_query("INSERT INTO `pms_users` 
    (`id`,`user`,`label`,`agent`,`empid`)
     VALUES 
    (NULL, '$user','$group','$labels[$i]','$ag')");
    $i ++;
}

我需要检查的三列是$user、$group和$ag。

7fhtutme

7fhtutme1#

为添加唯一索引 (user, label, empid) . 那么数据库将不允许您创建重复项。

ALTER TABLE pms_users
ADD UNIQUE INDEX (user, label, empid);
fgw7neuy

fgw7neuy2#

如果用户、标签和代理的每个组合只能有一行,则应将它们定义为唯一约束:

ALTER TABLE pms_users ADD CONSTRAINT pms_users_unq UNIQUE (`user`, `label`, `agent`);

然后让数据库用insert ignore语句完成繁重的工作:

INSERT IGNORE INTO `pms_users`
(`user`, `label`, `agent`, `empid`)
VALUES ('some_user', 'some_label', 'some_agent', 123)
slmsl1lt

slmsl1lt3#

您可以尝试在重复密钥更新查询中插入。。它检查重复的钥匙。如果存在mysql,则执行更新查询;如果不存在mysql,则执行插入查询。当然,在数据库中应该声明唯一的密钥。下面是这个案例的mysql文档https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

相关问题