taroyanaka: better-sqlite3のプレースホルダーの使える場合と使えない場合
GitHub Copilot: better-sqlite3
のプレースホルダーは、SQL文の中で値を動的に指定する場合に使用します。プレースホルダーを使用することで、SQLインジェクション攻撃からアプリケーションを保護することができます。
プレースホルダーは、以下のような場合に使用できます。
SELECT
文のWHERE
句で、検索条件を動的に指定する場合INSERT
文で、挿入する値を動的に指定する場合UPDATE
文で、更新する値を動的に指定する場合DELETE
文で、削除する行を動的に指定する場合
一方、以下のような場合にはプレースホルダーを使用できません。
SELECT
文のORDER BY
句で、カラム名を動的に指定する場合SELECT
文のLIMIT
句で、取得する行数を動的に指定する場合SELECT
文のOFFSET
句で、取得する行のオフセットを動的に指定する場合
これらの場合には、SQL文を動的に生成する必要があります。ただし、SQL文を動的に生成する場合は、SQLインジェクション攻撃に対して脆弱になるため、入力値の検証やサニタイズを行うことが重要です。