将用户信息存在数组当中,然后使用了循环录入mysql数据库,但是偶尔会有个别用户的信息会重复两次录入,不知道是哪里的逻辑错误问题,麻烦指点:
逻辑代码如下
$data = array(); //用户信息数组
for($i=0;$i<count($data);$i++){
$sql = "INSERT INTO *********";
$result = mysql_query($sql);
//以下是录入统计成功与失败的数量
if($result){
$success_num[]=$i;
}else{
$error_num[]=$i;
}
}
//跳出循环,弹出结果给用户,并跳转到首页
$con = "成功上传".count($success_num)."条!- 失败:".count($error_num)."条";
echo "<script> alert('$con');parent.location.href='index.php'; </script>";
目前奇怪的是,总会有个别用户录入的信息被执行两次(比如提交的数组只有5个元素,但是录入数据库产生了10条记录)
90%的录入都是正常的,只有个别用户会产生,麻烦高手指点
你是用location.href跳转就会这样,有的浏览器一刷新或就会重复提交两次表单
解决的办法有好几种,我简单的举个栗子好了
ajax无刷新
前端提交的时候后端生成一个token,保存到session,提交到后端的时候对比两个token
数据库做验证
后端用301或302跳转
逻辑上没看到有什么特别问题,只能说可能是你前端提交两次请求,而且一般来说,插入数据一般判断该用户是否存在数据库中,但你没有做这个判断,也导致信息出现十条记录
你应该想到的是:
在插入之前,对数据库的值进行判断,最少有唯一索引的方式。
个别录入错误的情况,看你你的$data 的数据存在重复。