mysql - Le problème des entrées répétées se produit toujours dans les boucles PHP
PHP中文网
PHP中文网 2017-05-24 11:30:40
0
4
588

Enregistrez les informations utilisateur dans un tableau, puis utilisez une boucle pour entrer dans la base de données mysql. Cependant, il arrive parfois que les informations des utilisateurs individuels soient saisies deux fois. Je ne sais pas où se trouve l'erreur logique.
Le code logique est le suivant

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

Ce qui est étrange en ce moment, c'est que les informations saisies par les utilisateurs individuels sont toujours exécutées deux fois (par exemple, le tableau soumis ne contient que 5 éléments, mais 10 enregistrements sont générés lors de la saisie dans la base de données)

90 % des entrées sont normales, seuls certains utilisateurs se produiront, veuillez donner quelques conseils

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
给我你的怀抱

Cela se produit lorsque vous utilisez location.href pour sauter. Certains navigateurs peuvent soumettre à nouveau le formulaire deux fois dès qu'ils sont actualisés. Il existe plusieurs solutions. Je vais juste vous donner un exemple.

    ajax pas de rafraîchissement
  1. Lors de la soumission du front-end, le back-end génère un jeton et l'enregistre dans la session. Lors de la soumission au back-end, les deux jetons sont comparés
  2. .

  3. Base de données pour vérification
  4. Le backend utilise 301 ou 302 pour sauter
巴扎黑

Je ne vois logiquement pas de problèmes particuliers. Je peux seulement dire qu'il se peut que votre front-end ait soumis deux requêtes, et d'une manière générale, lors de l'insertion de données, on juge généralement si l'utilisateur existe dans la base de données, mais vous n'avez pas porté ce jugement. En conséquence, dix enregistrements sont apparus

.
为情所困

Ce à quoi vous devriez penser est :

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

Avant l'insertion, jugez la valeur de la base de données, au moins avec un index unique.

En cas d'erreurs de saisie individuelles, cela dépend des données contenues dans vos $data.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal