Maison >base de données >tutoriel mysql >Pourquoi mon insertion MySQLi échoue-t-elle malgré la réussite de toutes les vérifications de débogage ?
Insertion de données à l'aide de MySQLi
Ce code semble exécuter toutes les vérifications de débogage, mais il ne parvient pas à insérer de nouvelles données dans la base de données. Analysons-le étape par étape.
Le code tente de vérifier si le "nom d'utilisateur" existe déjà dans la table "UserData". Sinon, il essaie d'ajouter une nouvelle ligne. Cependant, il rencontre un problème lors de la partie insertion.
Identification du problème
Le problème réside dans la manière dont les paramètres de liaison sont déclarés pour l'instruction d'insertion. Au lieu de transmettre plusieurs fois des variables individuelles (par exemple, $username, $password deux fois), elles doivent être transmises avec leurs types correspondants.
Solution
La fonction bind_param s'attend à ce que les types de variables précèdent les variables elles-mêmes. Par conséquent, la bonne façon de lier les paramètres est :
$stmt2->bind_param('ss', $username, $password);
Alternativement, si vous utilisez PHP 5.6 ou version ultérieure, vous pouvez simplifier cela en utilisant l'opérateur spread (...) :
$data = ['user' => 'someUser', 'password' => 'secret']; $stmt2->bind_param('ss', ...$data);
Une fois les paramètres correctement liés, l'insertion devrait réussir. Notez que le code fourni dans votre question contient des commentaires potentiellement déroutants ou inutiles ; il est recommandé de les supprimer pour plus de clarté.
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!