Maison  >  Article  >  développement back-end  >  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 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 07:16:02308parcourir

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, entraînant 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 :

<code class="go">query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        (val1, val2))</code>

Types incompatibles

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

<code class="go">query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        val1, val2)</code>

Éviter les différences 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 un risque de non-concordance des opérateurs :

<code class="go">query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %s AND column2_name = %s`,
        strconv.Itoa(val1), val2)</code>

La solution Go

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

<code class="go">query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %s`,
        val1, val2)</code>

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

Prévention des injections

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

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