mysql – Das Problem der wiederholten Eingabe tritt immer in PHP-Schleifen auf
PHP中文网
PHP中文网 2017-05-24 11:30:40
0
4
603

Speichern Sie die Benutzerinformationen in einem Array und geben Sie sie dann über eine Schleife in die MySQL-Datenbank ein. Gelegentlich werden die Informationen einzelner Benutzer jedoch nicht eingegeben. Bitte geben Sie mir einen Rat.
Der Logikcode lautet wie folgt

$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>";

Was im Moment seltsam ist, ist, dass die von einzelnen Benutzern eingegebenen Informationen immer zweimal ausgeführt werden (z. B. hat das übermittelte Array nur 5 Elemente, aber bei der Eingabe in die Datenbank werden 10 Datensätze generiert)

90 % der Einträge sind normal, nur einige Benutzer werden es tun, bitte geben Sie mir eine Anleitung

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen(4)
给我你的怀抱

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

  1. ajax无刷新

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

  3. 数据库做验证

  4. 后端用301或302跳转

巴扎黑

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

为情所困

你应该想到的是:

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

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage