Heim > Fragen und Antworten > Hauptteil
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
给我你的怀抱2017-05-24 11:32:40
你是用location.href跳转就会这样,有的浏览器一刷新或就会重复提交两次表单
解决的办法有好几种,我简单的举个栗子好了
ajax无刷新
前端提交的时候后端生成一个token,保存到session,提交到后端的时候对比两个token
数据库做验证
后端用301或302跳转
巴扎黑2017-05-24 11:32:40
邏輯上沒看到有什麼特別問題,只能說可能是你前端提交兩次請求,而且一般來說,插入數據一般判斷該用戶是否存在數據庫中,但你沒有做這個判斷,也導致信息出現十條記錄
为情所困2017-05-24 11:32:40
你应该想到的是:
insert into table (fields...) values(values),(values),(values);