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
Susan Sarandonoriginal
2024-11-10 04:11:02328parcourir

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);
}

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!

Déclaration:
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