排查參數化 SQL 查詢錯誤:解決「字串格式化期間未轉換所有參數」
嘗試執行參數化 SQL查詢時,開發人員可能會遇到以下問題:遇到錯誤:「TypeError:並非所有參數在字串格式化期間都已轉換。」當對參數不足或格式不正確的查詢使用字串格式時,通常會出現此問題。
要解決此錯誤,確保格式化字串中的每個佔位符與查詢中的對應參數相符至關重要。在給定的程式碼片段中:
cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
查詢中的佔位符「%s」表示要替換為搜尋中的值的參數。但是,execute 方法需要一個包含參數的清單或元組。為了修正這個問題,可以進行以下修改:
cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])
透過將搜尋包裝在列表中,它成為一個可以解壓縮為單一參數的迭代。在 MySQLdb 中執行參數化查詢的正確語法要求參數以列表形式傳遞。
這個簡單的調整可確保所有參數在字串格式化期間正確轉換,並消除上述錯誤。或者,可以使用元組(不可變列表)來代替列表來傳遞參數。
以上是為什麼我的參數化 SQL 查詢會拋出「字串格式化期間未轉換所有參數」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!