Maison >base de données >tutoriel mysql >Pourquoi mon script PHP insère-t-il des données deux fois dans MySQL alors que je ne l'ai exécuté qu'une seule fois ?
PHP s'exécutant une fois mais inséré deux fois dans la base de données MySQL
Lors de l'exécution du code fourni localement, vous pouvez rencontrer une anomalie où la base de données insère deux enregistrements au lieu d'un après que le script ait été exécuté une seule fois. Ce problème est particulièrement évident dans les navigateurs tels qu'Opera ou Chrome.
Le problème survient en raison d'un comportement courant du navigateur : demander des favicons. Lorsqu'un site Web est consulté, le navigateur enverra une demande pour le script et une deuxième demande pour le favicon. Dans votre cas, puisque le code traite chaque requête, il tente d'insérer deux fois un enregistrement de base de données, ce qui entraîne des entrées en double.
Pour résoudre ce problème, vous devez modifier votre code pour vous assurer que la requête d'insertion est exécutée uniquement pour des demandes spécifiques, telles que le chargement initial de la page. Vous pouvez y parvenir en utilisant la variable PHP $_SERVER['REQUEST_URI'], qui fournit l'URI demandé de la page actuelle. En comparant cette variable à une valeur connue (par exemple, l'URI de la page d'accueil), vous pouvez restreindre l'exécution de la requête d'insertion à des requêtes spécifiques.
Par exemple, vous pouvez modifier votre code comme suit :
$requestURI = $_SERVER['REQUEST_URI']; if ($requestURI == '/index.php') { $sql = "INSERT INTO test_table (value, insert_time) VALUES ('testing', '" . time() . "')"; $result = mysql_query($sql); }
Cette modification garantit que la requête d'insertion ne sera exécutée que lors de l'accès à la page d'accueil, empêchant ainsi les insertions de bases de données en double lorsque le navigateur demande le favicon.
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!