"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment concaténer efficacement des chaînes avec des valeurs dans des requêtes SQL à l'aide de Go ?

Comment concaténer efficacement des chaînes avec des valeurs dans des requêtes SQL à l'aide de Go ?

Publié le 2024-11-07
Parcourir:809

How to Effectively Concatenate Strings with Values in SQL Queries Using Go?

Créer efficacement des requêtes SQL dans Go

Concaténer des chaînes avec des valeurs dans des requêtes SQL texte peut être un peu délicat dans Go. Contrairement à Python, la syntaxe de formatage des chaînes de Go se comporte différemment, ce qui entraîne des erreurs courantes comme celle rencontrée ici.

Erreur de syntaxe du tuple

L'extrait de code initial tente d'utiliser un Python -tuple de style, qui n'est pas pris en charge dans Go. Cela entraîne une erreur de syntaxe :

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        (val1, val2))

Types incompatibles

La tentative de conversion des éléments du tuple en chaînes échoue également en raison d'une incompatibilité de type :

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        val1, val2)

Éviter les erreurs d'opérateur

Convertir les paramètres sous forme de chaînes et les concaténer avec l'opérateur %s fonctionnerait mais n'est pas recommandé. Cette approche introduit le risque de non-concordance des opérateurs :

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %s AND column2_name = %s`,
        strconv.Itoa(val1), val2)

La solution Go

Pour écrire correctement une requête SQL texte avec concaténation de valeurs dans Go, utilisez fmt.Sprintf comme suit :

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %s`,
        val1, val2)

Cette syntaxe évite les vulnérabilités d'injection et garantit une conversion de type appropriée.

Prévention des injections

Pour éviter les attaques par injection SQL, utilisez toujours des ou fournissez des caractères d'échappement pour les entrées fournies par l'utilisateur.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3