首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果已经存在则不会插入的PHP MySQL插入查询

如果已经存在则不会插入的PHP MySQL插入查询
EN

Stack Overflow用户
提问于 2018-07-03 03:51:19
回答 3查看 787关注 0票数 1

不幸的是,我一直在做一些研究,没有发现任何我能够工作的东西,我认为这是因为我不理解我一直在研究的示例中的MySQL结构。

我要做的是运行一个insert查询,并检查3个特定列中的值以确保它们不存在,然后插入,否则什么也不做。

我的表非常基本: id(int11)、用户(varchar(45))、标签(varchar(255))、代理(varchar(255))、空id(varchar(10))。

我的id是我的主id,带有自动递增,这是我目前的代码,它可以在插入时工作,但没有处理重复的代码:

代码语言:javascript
复制
$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。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-03 03:59:07

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

代码语言:javascript
复制
ALTER TABLE pms_users ADD CONSTRAINT pms_users_unq UNIQUE (`user`, `label`, `agent`);

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

代码语言:javascript
复制
INSERT IGNORE INTO `pms_users`
(`user`, `label`, `agent`, `empid`)
VALUES ('some_user', 'some_label', 'some_agent', 123)
票数 4
EN

Stack Overflow用户

发布于 2018-07-03 03:56:53

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

代码语言:javascript
复制
ALTER TABLE pms_users
ADD UNIQUE INDEX (user, label, empid);
票数 5
EN

Stack Overflow用户

发布于 2018-07-03 04:06:21

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51142891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档