您好,匿名用户
随意问技术百科期待您的加入

mysql如何防止插入重复数据?

+2 投票

我最近在修改一个PHP项目WEB1,数据库是mysql,表类型是MyISAM。
现在有这么个问题,WEB1中的用户是另一个项目WEB2中的用户自动注册进来的,在WEB1的程序中每次都先判断该用户名是否存在,不存在则插入用户数据,但是发现mysql中偶尔有个别用户的重复数据。我觉得是MyISAM表不支持事务且用户重复提交请求导致的,不想改表类型,如何防止重复数据呢?

用户头像 提问 2012年 12月25日 @ Talon 上等兵 (294 威望)
分享到:

1个回答

+2 投票
 
最佳答案

有以下2种方法解决:

一 使用sql语句防止重复数据

sql: insert into ...select ... not exists

例子:

insert into table
(name,email,phone)
select '$name','$email','$phone' from dual
where not exists (
select 1 from table where username='$name' limit 1
) 
//name已存在的话就不插入这条数据

二  表的相关字段加上唯一索引(unique index)+ 相关sql

sql:insert ignore into

例子:

//name设为unique index
insert ignore into user (name,email,phone) values('$name','$email','$phone') 
//name已存在忽略这条数据,name不存在插入这条数据
用户头像 回复 2012年 12月25日 @ dongxldante 上等兵 (386 威望)
选中 2012年 12月25日 @Talon
提一个问题:

相关问题

0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Soraka 上等兵 (319 威望)
0 投票
1 回复 57 阅读
用户头像 提问 2012年 12月1日 @ Ahri 上等兵 (292 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2012年 12月1日 @ Fizz 上等兵 (325 威望)
0 投票
1 回复 54 阅读
用户头像 提问 2012年 12月1日 @ Olaf 上等兵 (366 威望)
+1 投票
1 回复 43 阅读
用户头像 提问 2013年 9月17日 @ Kog'Maw 上等兵 (212 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...