Maison >développement back-end >tutoriel php >Pourquoi des variables et des paramètres incompatibles ont-ils provoqué une erreur dans les instructions préparées par mysqli ?

Pourquoi des variables et des paramètres incompatibles ont-ils provoqué une erreur dans les instructions préparées par mysqli ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-22 10:57:03251parcourir

Why Did Mismatched Variables and Parameters Cause an Error in mysqli Prepared Statements?

mysqli : "Le nombre de variables ne correspond pas au nombre de paramètres"

En réponse au problème rencontré lors de l'utilisation des instructions préparées par mysqli, la cause première réside dans la syntaxe incorrecte de l'instruction préparée. Comme mentionné dans la réponse, la correction suivante résout 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();

Lors de la préparation d'une déclaration, il est crucial de placer des espaces réservés pour les données d'entrée avec des points d'interrogation. Cependant, dans l'instruction originale, l'espace réservé pour la variable make était placé entre guillemets, ce qui le rendait méconnaissable en tant qu'espace réservé. Par conséquent, le nombre de points d'interrogation ne correspondait pas au nombre de variables dans bind_param().

Par conséquent, l'instruction préparée corrigée élimine cet écart en supprimant les guillemets autour du ? espace réservé, qui permet la liaison appropriée des variables d'entrée à l'aide de bind_param(). Cela garantit que l'instruction peut être exécutée avec succès, produisant les résultats souhaités.

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