Deux fois, c'est une fois : comprendre les problèmes d'insertion de base de données MySQL
Dans un scénario déroutant, un code PHP destiné à insérer des données dans une base de données MySQL de manière inattendue insère les données deux fois après une seule exécution. Le code fonctionne parfaitement sur localhost, mais le problème de duplication survient lorsqu'il est déployé sur un serveur. De plus, si la page est actualisée deux fois, la base de données ne reflète qu'un seul résultat. Ce dilemme déroutant soulève la question de savoir quels facteurs contribuent à ce comportement anormal.
Le coupable caché
La réponse réside dans la gestion des requêtes du navigateur. Lorsque les navigateurs chargent une page Web, ils envoient plusieurs requêtes, dont une pour le script principal et une autre pour le favicon. Dans ce cas, même si le code n'est exécuté qu'une seule fois, la présence du fichier .htaccess redirige toutes les requêtes vers le fichier d'index, ce qui entraîne plusieurs insertions dans la base de données.
La résolution
Pour résoudre ce problème, le code doit être modifié pour exécuter la requête d'insertion uniquement pour une requête spécifique, à l'exclusion de la requête favicon. Ceci peut être réalisé en ajoutant une condition qui vérifie l'existence du fichier favicon.ico dans l'URI de la requête. Si le fichier est absent, ce qui signifie une requête de page régulière, la requête d'insertion est exécutée ; sinon, il est ignoré.
Code révisé
Le code révisé suivant résout le problème en introduisant la condition nécessaire :
if (!strpos($_SERVER['REQUEST_URI'], 'favicon.ico')) { $result = mysql_query($sql); }
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!