搜尋

首頁  >  問答  >  主體

mysql - 關於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中文网2749 天前592

全部回覆(4)我來回復

  • 给我你的怀抱

    给我你的怀抱2017-05-24 11:32:40

    你是用location.href跳轉就會這樣,有的瀏覽器一刷新或就會重複提交兩次表單
    解決的辦法有好幾種,我簡單的舉個栗子好了

    1. ajax無刷新

    2. 前端提交的時候後端產生一個token,保存到session,提交到後端的時候對比兩個token

    3. 資料庫做驗證

    4. 後端用301或302跳轉

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-24 11:32:40

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

    回覆
    0
  • 为情所困

    为情所困2017-05-24 11:32:40

    你應該想到的是:

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

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:32:40

    在插入之前,對資料庫的值進行判斷,最少有唯一索引的方式。

    個別輸入錯誤的情況,看你你的$data 的資料存在重複。

    回覆
    0
  • 取消回覆