Maison > développement back-end > Golang > le corps du texte

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

Patricia Arquette
Libérer: 2024-10-30 07:16:02
original
307 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

É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>
Copier après la connexion

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>
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!