Maison > base de données > tutoriel mysql > Erreur de paramètre de liaison MySQLi : pourquoi mon nombre de caractères de type ne correspond-il pas à mes espaces réservés ?

Erreur de paramètre de liaison MySQLi : pourquoi mon nombre de caractères de type ne correspond-il pas à mes espaces réservés ?

Patricia Arquette
Libérer: 2024-11-29 10:05:13
original
269 Les gens l'ont consulté

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

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, ...);
Copier après la connexion

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, ...);
Copier après la connexion

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, ...);
Copier après la connexion

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, '?');
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal