在SQLite 中處理「WHERE _ IN ___」語句
使用WHERE IN🎜 > SQLite 中的語句,確保語句的正確建構至關重要,以避免錯誤。當提供的綁定數量與預期數量不符時,就會出現問題,導致程式錯誤。
要解決此問題,您需要修改語句以包含正確數量的問號 (?),如下所示參數。例如:statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))這裡,我們使用
join([?]*len(list_of_vars))_ 產生逗號分隔的問號字串,從而允許正確綁定參數值。例如,如果 _list_of_vars 包含 ['foo', 'bar'],則語句變成:
"SELECT * FROM tab WHERE obj IN (?, ?)"現在,您可以透過傳遞
list_of_vars作為執行此語句參數值:
c.execute(statement, list_of_vars)雖然可能存在替代方法,但建議使用綁定參數來防止 SQL注入攻擊。對於大量列表,使用臨時表來儲存值並對其進行連接可能會提高效率。
以上是如何在 SQLite 中正確處理帶有綁定參數的'WHERE IN”語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!