Le nombre de paramètres dans l'instruction préparée n'est pas cohérent avec le nombre de variables liées par bind_param
P粉578343994
P粉578343994 2023-08-22 23:51:55
0
1
442
<p>Voici mon extrait de code : </p> <pre class="brush:php;toolbar:false;">$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types OÙ année = ? ET marque = '?' COMMANDER par modèle"); $stmt->bind_param('est', $année, $make); $stmt->execute();</pre> <p>Lorsque je génère les valeurs de $year et $make, je peux voir les valeurs, mais lorsque j'exécute ce script, j'obtiens une valeur nulle et l'avertissement suivant apparaît dans mon fichier journal : </ p> ; <blockquote> <p>Avertissement PHP : mysqli_stmt::bind_param() : le nombre de variables ne correspond pas au nombre de paramètres dans l'instruction préparée</p> </blockquote> <p>Dans ce cas, le type d'année dans la base de données est int(10), j'ai essayé de le convertir en type int pour le passage, et make est un varchar(20) avec l'encodage utf8_unicode_ci. Y a-t-il quelque chose qui me manque ? </p>
P粉578343994
P粉578343994

répondre à tous(1)
P粉513316221

Votre déclaration préparée est fausse, elle devrait être :

$stmt = $mysqli->prepare("
    SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model
");
$stmt->bind_param('is', $year, $make);
$stmt->execute();

Lorsque vous préparez une déclaration, vous devez remplacer chaque variable par un point d'interrogation au lieu de guillemets. Les points d'interrogation entre guillemets ne seront pas reconnus comme des espaces réservés.

Le nombre de points d'interrogation doit être égal au nombre de variables dans bind_param()

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal