Maison > Article > développement back-end > Comment résoudre le problème « Le nombre de variables ne correspond pas au nombre de paramètres » dans mysqli_bind_param() ?
Comprendre l'erreur « Le nombre de variables ne correspond pas au nombre de paramètres » dans mysqli_bind_param()
Lors de l'utilisation d'instructions préparées avec mysqli de MySQL extension, il est crucial de s'assurer que la liaison des paramètres s'aligne sur la syntaxe de requête préparée. Ne pas le faire peut entraîner une erreur du type « Le nombre de variables ne correspond pas au nombre de paramètres dans l'instruction préparée. »
Approfondissons l'extrait de code fourni pour identifier le problème :
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = '?' ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();
L'erreur se produit car l'instruction préparée contient un espace réservé pour la valeur make entre guillemets : "?'". Dans une instruction préparée, les points d'interrogation sont utilisés comme espaces réservés pour les valeurs qui seront liées ultérieurement. Cependant, lorsqu'ils sont placés entre guillemets, ils sont traités comme du texte littéral plutôt que comme des espaces réservés.
Correction de la déclaration préparée
Pour résoudre le problème, supprimez les guillemets entourant le ? espace réservé pour make dans la déclaration préparée :
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); $stmt->bind_param('is', $year, $make); $stmt->execute();
Maintenant, la déclaration préparée en a un ? espace réservé pour chaque variable, année et marque.
Points clés à retenir
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!