ホームページ > データベース > mysql チュートリアル > SQLite でバインドパラメータを含む「WHERE IN」ステートメントを適切に処理する方法

SQLite でバインドパラメータを含む「WHERE IN」ステートメントを適切に処理する方法

Mary-Kate Olsen
リリース: 2025-01-03 00:31:39
オリジナル
904 人が閲覧しました

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

SQLite での "WHERE _ IN ___" ステートメントの処理

WHERE IN ステートメントを使用する場合、エラーを避けるためにステートメントが適切に構築されていることを確認することが重要です。この問題は、指定されたバインディングの数が予期された数と一致しない場合に発生し、ProgrammingError が発生します。

これに対処するには、ステートメントを変更して正しい数の疑問符 (?) を含める必要があります。パラメータ。例:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート