Beim Schreiben von Text-SQL-Abfragen in Go können beim Verketten von Zeichenfolgenteilen mit Werten Probleme auftreten. Herkömmliche Methoden, wie die Verwendung der Platzhalter %d und %s innerhalb einer Zeichenfolge, können zu Syntaxfehlern oder Typkonflikten führen.
Verkettung im Python-Stil
In Python Sie können Zeichenfolgen und Werte mit %-Operatoren innerhalb von Zeichenfolgen in drei Anführungszeichen verketten. Dieser Ansatz wird jedoch in Go nicht unterstützt.
Go-Äquivalent
Um eine ähnliche Verkettung in Go zu erreichen, können Sie die Funktion fmt.Sprintf verwenden. Es benötigt ein Zeichenfolgenformat als erstes Argument und zusätzliche Argumente für die Platzhalter:
<code class="go">query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnC = %s`, someNumber, someString)</code>
Verhindern von Injektionsschwachstellen
Beim Verketten von Werten in Abfragen ist es wichtig, dies zu vermeiden Sicherheitslücken bei der Injektion. Anstatt Platzhalter in Zeichenfolgen zu verwenden, sollten Sie vorbereitete Anweisungen verwenden:
<code class="go">query := `SELECT columnA FROM tableA WHERE columnB = ? AND columnC = ?` rows, err := db.Query(query, val1, val2)</code>
Hier ? Platzhalter stellen die Werte dar und val1 und val2 werden als Argumente an db.Query übergeben. Diese Methode gewährleistet die Abfragesicherheit und verhindert, dass böswillige Eingaben die Datenbank beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWie erstellt man sicher Text-SQL-Abfragen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!