mysql - 关于PHP循环总是会出现重复录入的问题
PHP中文网
PHP中文网 2017-05-24 11:30:40
[PHP讨论组]

将用户信息存在数组当中,然后使用了循环录入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%的录入都是正常的,只有个别用户会产生,麻烦高手指点

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
给我你的怀抱

你是用location.href跳转就会这样,有的浏览器一刷新或就会重复提交两次表单
解决的办法有好几种,我简单的举个栗子好了

  1. ajax无刷新

  2. 前端提交的时候后端生成一个token,保存到session,提交到后端的时候对比两个token

  3. 数据库做验证

  4. 后端用301或302跳转

巴扎黑

邏輯上沒看到有什麼特別問題,只能說可能是你前端提交兩次請求,而且一般來說,插入數據一般判斷該用戶是否存在數據庫中,但你沒有做這個判斷,也導致信息出現十條記錄

为情所困

你应该想到的是:

insert into table (fields...) values(values),(values),(values);
phpcn_u1582

在插入之前,对数据库的值进行判断,最少有唯一索引的方式。

个别录入错误的情况,看你你的$data 的数据存在重复。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号