首頁 >資料庫 >mysql教程 >如何在 SQLite 中正確處理帶有綁定參數的'WHERE IN”語句?

如何在 SQLite 中正確處理帶有綁定參數的'WHERE IN”語句?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 00:31:39912瀏覽

How to Properly Handle `WHERE IN` Statements with Bind Parameters in SQLite?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn