Une erreur courante rencontrée lors de l'utilisation de mysqli_stmt::bind_param est la non-concordance entre le nombre de paramètres fournis et le nombre d'espaces réservés (points d'interrogation) dans la requête SQL préparée. Voici comment vous assurer qu'ils s'alignent correctement :
La chaîne de définition de type dans bind_param() se compose d'une séquence de caractères représentant le type de données de chaque paramètre. Chaque caractère de la chaîne doit correspondre à un seul espace réservé dans la requête préparée. Par exemple :
$stmt->bind_param("sss", $one, $two, $three);
Dans l'exemple ci-dessus, la chaîne de définition de type "sss" contient trois caractères 's', indiquant que les trois paramètres ($un, $deux, $trois) sont tous des chaînes. La requête préparée doit alors contenir trois espaces réservés pour correspondre à cette définition, comme :
$stmt->prepare("INSERT INTO table (one, two, three) VALUES (?,?,?)");
Si le nombre de caractères dans la chaîne de définition de type ne correspond pas au nombre d'espaces réservés dans la requête, bind_param() générera une erreur indiquant que le nombre de variables n'est pas égal au nombre d'espaces réservés.
Pour garantir une bonne exécution, vérifiez toujours que le nombre de caractères dans la chaîne de définition de type correspond au nombre d'espaces réservés dans la requête préparée.
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!