Erreur de paramètre de liaison : incompatibilité de nombre
Dans les instructions préparées par MySQLi, le nombre de caractères de type (par exemple "s" pour chaîne) dans le La méthode bind_param doit correspondre au nombre d'espaces réservés (par exemple "?") dans le SQL requête.
Résumé du problème
Vous recevez une erreur car l'appel bind_param dans votre code ne correspond pas au nombre d'espaces réservés dans l'instruction préparée :
$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
Cela est probablement dû à une inadéquation entre le nombre d'entrées de formulaire (65) et le nombre d'espaces réservés dans le requête.
Format correct
Le format correct pour bind_param est le suivant :
$stmt->bind_param("type_characters", $variable1, $variable2, ...);
où "type_characters" est une chaîne contenant un caractère par espace réservé dans la requête, indiquant le type de données liées.
Type de comptage Caractères
Pour éviter les erreurs, il est recommandé de compter le nombre d'espaces réservés manuellement ou à l'aide d'une expression régulière. Dans votre cas, vous devez confirmer que l'instruction préparée contient 65 espaces réservés.
Exemple
Pour une instruction préparée modifiée avec 65 espaces réservés, l'appel bind_param correct serait :
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
Conseil
Pour Pour aider à garantir une liaison correcte, envisagez d'utiliser la méthode suivante qui compte le nombre d'espaces réservés dans une requête SQL :
function countPlaceholders($sql) { return substr_count($sql, '?'); }
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!