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)
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