Dépannage des erreurs de requête SQL paramétrées : résolution de « tous les arguments ne sont pas convertis lors du formatage de la chaîne »
Lors de la tentative d'exécution de requêtes SQL paramétrées, les développeurs peuvent rencontrez l'erreur : "TypeError : tous les arguments ne sont pas convertis lors du formatage de la chaîne." Ce problème survient généralement lors de l'utilisation du formatage de chaîne pour la requête avec des paramètres insuffisants ou mal formatés.
Pour résoudre cette erreur, il est crucial de s'assurer que chaque espace réservé dans la chaîne formatée correspond à un argument correspondant dans la requête. . Dans l'extrait de code donné :
cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
L'espace réservé '%s' dans la requête représente un paramètre à remplacer par la valeur dans la recherche. Cependant, la méthode d'exécution attend une liste ou un tuple contenant les paramètres. Pour remédier à cela, la modification suivante peut être apportée :
cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])
En encapsulant la recherche dans une liste, elle devient un itérable qui peut être décompressé en paramètres individuels. La syntaxe correcte pour exécuter des requêtes paramétrées dans MySQLdb nécessite que les paramètres soient transmis sous forme de liste.
Cet ajustement simple garantit que tous les arguments sont correctement convertis lors du formatage de la chaîne et élimine l'erreur susmentionnée. Alternativement, un tuple (une liste immuable) peut être utilisé à la place d'une liste pour transmettre les paramètres.
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!