在Go 中編寫文字SQL 查詢時,在將字串部分與值連接時可能會遇到問題。傳統方法,例如在字串中使用 %d 和 %s 佔位符,可能會導致語法錯誤或類型不符。
Python 樣式連接
在 Python 中,您可以在三引號字串中使用 % 運算子連接字串和值。但是,Go 中不支援這種方法。
Go 等效
要在 Go 中實現類似的串聯,可以使用 fmt.Sprintf 函數。它採用字串格式作為第一個參數和占位符的附加參數:
<code class="go">query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnC = %s`, someNumber, someString)</code>
防止注入漏洞
將值連接到查詢時,避免這一點至關重要注入漏洞。不要在字串中使用佔位符,而是考慮使用準備好的語句:
<code class="go">query := `SELECT columnA FROM tableA WHERE columnB = ? AND columnC = ?` rows, err := db.Query(query, val1, val2)</code>
Here, ?佔位符代表值,val1 和 val2 作為參數傳遞給 db.Query。這種方法保證了查詢安全,防止惡意輸入影響資料庫。
以上是如何在 Go 中安全地建構文字 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!