"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 puis-je concaténer en toute sécurité le texte et les valeurs lors de la construction de requêtes SQL dans GO?

Comment puis-je concaténer en toute sécurité le texte et les valeurs lors de la construction de requêtes SQL dans GO?

Publié le 2025-03-24
Parcourir:619

How can I safely concatenate text and values when constructing SQL queries in Go?

Concaténation du texte et des valeurs dans go sql requêtes

Lors de la construction d'une requête SQL de texte dans GO, il y a certaines règles de syntaxe à suivre lorsque la chaîne de la concaténage et la valeur des composants, en particulier lors de l'utilisation des intérêts. L'approche Tuple n'est pas valide dans GO, et tenter de lancer des paramètres car les chaînes entraîneront des erreurs de décalage de type.

La façon idiomatique de réaliser cela en Go est d'utiliser FMT.Sprintf pour formater la chaîne de requête. Cela vous permet d'intégrer des valeurs dans la chaîne à l'exécution:

query: = fmt.sprintf (`Sélectionnez Columna dans Tablea où ColumnB =% D et ColumnB =% S`, SomeNumber, Somestring)
query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnB = %s`,
                     someNumber, someString)

, Err: = DB.Query (Query, Val1, Val2)
rows, err := db.Query(query, val1, val2)

Éviter l'injection SQL

Il est crucial de noter que la concaténation de chaîne dans les requêtes SQL peut conduire à des vulnérabilités d'injection. Pour atténuer ce risque, utilisez des instructions préparées et des requêtes paramétrées. En passant les valeurs sous forme de paramètres, vous pouvez empêcher la saisie malveillante de modifier la requête SQL prévue.

par exemple:

stmt, err: = db.prepare (`sélectionnez Columna à partir de tablea où ColumnB =? Et ColumnB =?) lignes, err: = stmt.Query (Val1, Val2)
stmt, err := db.Prepare(`SELECT columnA FROM tableA WHERE columnB = ? AND columnB = ?`)
rows, err := stmt.Query(val1, val2)
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