Maison  >  Article  >  développement back-end  >  Comment puis-je utiliser en toute sécurité une liste d’identifiants dans une clause MySQL IN ?

Comment puis-je utiliser en toute sécurité une liste d’identifiants dans une clause MySQL IN ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 04:35:02234parcourir

How Can I Safely Use a List of IDs in a MySQL IN Clause?

Implosion de listes pour des clauses MySQL IN sécurisées

Pour utiliser en toute sécurité une liste d'ID dans une clause MySQL IN et éviter l'injection SQL, utilisez MySQL capacités de paramétrage au lieu d'imploser manuellement la liste et d'y échapper vous-même.

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings, tuple(list_of_ids))

Cette approche a plusieurs avantages :

  • Sécurité : Les données sont transmises en tant que paramètre au pilote MySQL, garantissant qu'elles sont correctement échappées et protégées contre l'injection.
  • Simplicité : Vous n'avez pas besoin d'effectuer des citations ou des échappements manuels, ce qui simplifie votre code et réduit le risque de erreurs.
  • Performance : Le paramétrage est souvent plus efficace que l'implosion de listes et leur échappement manuel.

Notez que les données sont transmises sous forme de tuple de valeurs, qui peut être utilisé en toute sécurité dans les requêtes MySQL. La variable format_strings crée une liste d'espaces réservés séparés par des virgules pour 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!

Déclaration:
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