PHP如何判断是否重复插入记录?
课程表里面其中有两个字段ctime(只有三个可选值:上午,下午,晚上),week(周一到周天),由于一个时间点只对应一门课程(如周一上午只有一门课),所以要同时判断cti...
课程表里面其中有两个字段ctime(只有三个可选值:上午,下午,晚上),week(周一到周天),由于一个时间点只对应一门课程(如周一上午只有一门课),所以要同时判断ctime和week是否重复插入,请指教,谢谢!
展开
展开全部
在插入数据之前,可以从数据库查询,
如果没有这条数据我们进行插入操作,存在就跳过。
<?php
$sql = "SELECT * FROM table WHERE ctime = '上午' AND week = '周一'";
$result = mysql_query($sql);
if (!$result) {
//没有查询到此记录,进行插入操作
}
?>
望采纳 Thx
追问
这样不是要进行21次查询了吗
追答
你可以写个函数封装起来这样就不会写那么多代码,查询是必要的
展开全部
可以给数据设定限制,把week+ctime设置为唯一索引,这样重复记录就无法插入;
在上面的数据库限制基础上,如果PHP插入语句不变,那么重复的时候会返回重复冲突,只要SQL的插入语句之后检测mysql_error就知道是否发生了冲突(插入失败)。也可以把插入语句改为REPLACE,这样当遇到重复的时候就直接修改之前的数据,不会导致失败。
在上面的数据库限制基础上,如果PHP插入语句不变,那么重复的时候会返回重复冲突,只要SQL的插入语句之后检测mysql_error就知道是否发生了冲突(插入失败)。也可以把插入语句改为REPLACE,这样当遇到重复的时候就直接修改之前的数据,不会导致失败。
更多追问追答
追问
可以将week和ctime同时设为唯一索引吗,因为一周里面肯定会有上午好多节课,或者一天里面好多节课,这样就不能设它们为唯一索引了
追答
不是同时设置为唯一索引,是两个字段上建立联合索引,索引的属性是唯一。
CREATE UNIQUE INDEX IDXxxxxxx ON TABxxxxx(ctime,week);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询