Maison > base de données > tutoriel mysql > Comment gérer correctement les instructions « WHERE IN » avec des paramètres de liaison dans SQLite ?

Comment gérer correctement les instructions « WHERE IN » avec des paramètres de liaison dans SQLite ?

Mary-Kate Olsen
Libérer: 2025-01-03 00:31:39
original
904 Les gens l'ont consulté

How to Properly Handle `WHERE IN` Statements with Bind Parameters in SQLite?

Gestion des instructions "WHERE _ IN ___" dans SQLite

Lors de l'utilisation d'un WHERE IN instruction dans SQLite, il est crucial de s'assurer de la bonne construction de l'instruction pour éviter les erreurs. Le problème survient lorsque le nombre de liaisons fournies ne correspond pas au nombre attendu, ce qui entraîne une erreur de programmation.

Pour résoudre ce problème, vous devez modifier votre instruction pour inclure le nombre correct de points d'interrogation (?) comme paramètres. Par exemple :

statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))
Copier après la connexion

Ici, nous générons une chaîne de points d'interrogation séparés par des virgules en utilisant join([?]*len(list_of_vars))_, permettant une liaison correcte des valeurs des paramètres. Par exemple, si _list_of_vars contient ['foo', 'bar'], l'instruction devient :

"SELECT * FROM tab WHERE obj IN (?, ?)"
Copier après la connexion

Maintenant, vous pouvez exécuter cette instruction en passant list_of_vars comme valeurs des paramètres :

c.execute(statement, list_of_vars)
Copier après la connexion

Bien que des méthodes alternatives puissent exister, l'utilisation de paramètres de liaison est recommandée pour empêcher les attaques par injection SQL. Pour les listes longues, l'utilisation d'une table temporaire pour les valeurs et la jointure à celle-ci peuvent améliorer l'efficacité.

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