Heim  >  Artikel  >  Backend-Entwicklung  >  Dynamisches SQL-Set Golang

Dynamisches SQL-Set Golang

WBOY
WBOYnach vorne
2024-02-11 09:24:19953Durchsuche

动态 SQL 集 Golang

Der PHP-Editor Xinyi stellt Ihnen heute ein leistungsstarkes Entwicklungstool vor – das dynamische SQL-Set Golang. Golang ist eine moderne Programmiersprache, die einfach zu erlernen, effizient und schnell ist. Dynamic SQL Set Golang kombiniert die Vorteile der Golang-Sprache und die Flexibilität von dynamischem SQL, um Entwicklern eine einfache und leistungsstarke Möglichkeit zur Bearbeitung von SQL-Abfragen und zum Betrieb von Datenbanken zu bieten. Durch die Verwendung des dynamischen SQL-Sets Golang können Entwickler einfacher dynamische SQL-Abfragen erstellen und SQL-Anweisungen dynamisch generieren, um sie an unterschiedliche Abfrageanforderungen anzupassen. Unabhängig davon, ob Sie kleine Projekte oder große Anwendungen entwickeln, kann der dynamische SQL-Satz Golang Entwicklern dabei helfen, Datenbankvorgänge effizienter abzuwickeln und die Entwicklungseffizienz zu verbessern.

Inhalt der Frage

Ich habe eine Frage zur Struktur einer SQLite-Abfrage. Ich versuche, einen vom Benutzer ausgewählten Wert in einer Tabelle zu aktualisieren, die über den Benutzernamen auf eine Zeile verweist. Die Tabelle trägt den Namen data 并具有以下列:username、password、address、notes.

Ich verwende den SQL-Treiber von Go (_ "github.com/mattn/go-sqlite3") und das ist meine Abfrage:

...
stmt, err := db.Prepare("UPDATE Data SET ?=? WHERE USERNAME=?")
check(err)
res, err := stmt.Exec(splittedQuery[0], splittedQuery[1],splittedQuery[2])
...

Ich kann bei dieser Sequenz nur einen Syntaxfehler erkennen: near“?”:语法错误. Wie soll ich mit diesem Problem umgehen? Es tut mir leid, wenn das eine triviale Frage ist, ich bin einfach neu und versuche, etwas daraus zu lernen.

Vielen Dank

Problemumgehung

Das ist in SQL nicht möglich. Es ist auch nicht SQLite-spezifisch. Parametrisierte Platzhalter werden nur für Werte verwendet. Sie können sie nicht zum Ändern der Struktur der Abfrage verwenden. Hier sind einige Dokumentationslinks als Referenz:

Was Sie tun möchten, ist eine dynamische Abfrage zu erstellen. Sie können dies tun, indem Sie die Abfragezeichenfolge selbst erstellen:

query := "UPDATE Data SET " + col_name + "=? WHERE USERNAME=?"

Aber abhängig von der Datenquelle von „column_name“ müssen Sie sich vor der SQL-Injection in Acht nehmen (das ist ein völlig anderes Thema, zum Spaß können Sie einen Blick darauf werfen https://imgs.xkcd.com/comics/exploits_of_a_mom.png ).

Es gibt auch Bibliotheken, die Ihnen dabei helfen können. Um beispielsweise ein Beispiel zu geben, können Sie dies überprüfen https://www.php.cn/link/2d16ad1968844a4300e9a490588ff9f8

Das obige ist der detaillierte Inhalt vonDynamisches SQL-Set Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen