Maison >base de données >tutoriel mysql >Pourquoi est-ce que je vois des entrées en double après avoir actualisé la page du jeu ?
Duplication d'insertion inattendue lors du chargement de la page
Considérez la situation sur une page Web sur le thème du jeu où les utilisateurs participent à divers jeux. Pour conserver un enregistrement de l'activité des utilisateurs, une requête est implémentée :
$insert_user_activity = mysql_query("INSERT INTO game_activity (user_id,user_full_name,game_id,game_name) values ('$user_id','$full_name','$browser_id','$game_title')");
Cette requête est destinée à insérer une nouvelle ligne dans la table "game_activity" à chaque fois qu'un utilisateur lance un jeu. Cependant, les utilisateurs ont rencontré un problème où l'actualisation de la page du jeu entraînait des insertions en double dans la base de données.
Analyse et résolution
Le comportement inattendu provient d'un contrôleur frontal défectueux. logique. La page exécutant la requête est invoquée lors de chaque requête adressée au site Internet, quelle que soit sa validité. Cela signifie que si les utilisateurs actualisent la page du jeu ou naviguent vers une ressource inexistante, la requête sera quand même exécutée, entraînant des insertions inutiles.
Pour remédier à ce problème, la logique du contrôleur frontal doit être modifiée. Il ne doit exécuter l'application que pour les requêtes valides, à l'exclusion des requêtes invalides. En corrigeant cette faille, le site évitera de nombreuses fausses insertions lors de sa mise en ligne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!