Maison > base de données > tutoriel mysql > Pourquoi mon code PHP insère-t-il des données deux fois dans MySQL après une seule exécution ?

Pourquoi mon code PHP insère-t-il des données deux fois dans MySQL après une seule exécution ?

Susan Sarandon
Libérer: 2024-11-10 04:11:02
original
304 Les gens l'ont consulté

Why Does My PHP Code Insert Data Twice in MySQL After Only One Run?

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal