L'éditeur PHP Xinyi vous présente aujourd'hui un puissant outil de développement - l'ensemble SQL dynamique Golang. Golang est un langage de programmation moderne, facile à apprendre, efficace et rapide. Dynamic SQL Set Golang combine les avantages du langage Golang et la flexibilité du SQL dynamique pour fournir aux développeurs un moyen simple et puissant de gérer les requêtes SQL et d'exploiter les bases de données. En utilisant l'ensemble SQL dynamique Golang, les développeurs peuvent plus facilement créer des requêtes SQL dynamiques et générer dynamiquement des instructions SQL pour s'adapter aux différents besoins des requêtes. Qu'il s'agisse de développer de petits projets ou de grandes applications, l'ensemble SQL dynamique Golang peut aider les développeurs à gérer plus efficacement les opérations de base de données et à améliorer l'efficacité du développement.
J'ai une question sur la structure de la requête SQLite. J'essaie de mettre à jour une valeur sélectionnée par l'utilisateur dans un tableau qui fait référence à une ligne par nom d'utilisateur.
La table s'appelle data
并具有以下列:username、password、address、notes
.
J'utilise le pilote SQL de go (_ "github.com/mattn/go-sqlite3"
) et voici ma requête :
... stmt, err := db.Prepare("UPDATE Data SET ?=? WHERE USERNAME=?") check(err) res, err := stmt.Exec(splittedQuery[0], splittedQuery[1],splittedQuery[2]) ...
Je ne peux obtenir qu'une seule erreur de syntaxe à partir de cette séquence : near“?”:语法错误
.
Comment dois-je gérer ce problème ? Je suis désolé si c'est une question triviale, je suis juste nouveau et j'essaie d'en tirer des leçons.
Merci
Vous ne pouvez pas faire cela en SQL. Ce n'est pas non plus spécifique à SQLite. Les espaces réservés paramétrés sont utilisés uniquement pour les valeurs ; vous ne pouvez pas les utiliser pour modifier la structure de la requête. Voici quelques liens de documentation pour votre référence :
Ce que vous voulez faire, c'est créer une requête dynamique. Vous pouvez le faire en créant vous-même la chaîne de requête :
query := "UPDATE Data SET " + col_name + "=? WHERE USERNAME=?"
Mais selon la source de données de column_name, il faut se méfier de l'injection sql (c'est un tout autre sujet, pour le plaisir vous pouvez y jeter un oeil https://imgs.xkcd.com/comics/exploits_of_a_mom.png ).
Il existe également des bibliothèques qui peuvent vous aider à y parvenir. Par exemple, pour donner un exemple, vous pouvez vérifier ceci https://www.php.cn/link/2d16ad1968844a4300e9a490588ff9f8
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!