在Go SQL 查詢中連接文字和值
在Go 中建立文字SQL 查詢時,連接時需要遵循一定的語法規則字串和值組件,特別是在使用整數時。
在提供的 Python 程式碼中,元組方法在 Go 中無效,嘗試將參數轉換為字串將導致類型不匹配錯誤。
在 Go 中完成此操作的慣用方法是使用 fmt.Sprintf 來格式化查詢字串。這允許您在運行時在字串中嵌入值:
<code class="go">query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnB = %s`, someNumber, someString)</code>
這裡,佔位符%d 和%s 分別表示整數和字串值,然後在db.Query 呼叫期間分配這些值:
<code class="go">rows, err := db.Query(query, val1, val2)</code>
此方法可確保值的格式正確並防止SQL 注入漏洞。
避免 SQL 注入
需要注意的是, SQL 查詢中的字串連接可能會導致注入漏洞。為了減輕這種風險,請使用準備好的語句和參數化查詢。透過將值作為參數傳遞,您可以防止惡意輸入修改預期的 SQL 查詢。
例如:
<code class="go">stmt, err := db.Prepare(`SELECT columnA FROM tableA WHERE columnB = ? AND columnB = ?`) rows, err := stmt.Query(val1, val2)</code>
透過使用準備好的語句,您可以保護您的應用程式免受惡意 SQL 輸入的影響同時保持構造動態查詢的便利性。
以上是在 Go 中建立 SQL 查詢時如何安全地連接文字和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!