静的プレースホルダと動的プレースホルダの違いが分からなかったので調べました。
結論
静的プレースホルダと動的プレースホルダは次のような違いがある。
他にも細かい部分が異なるので詳細は後述します。
プレースホルダとは?
プレースホルダによる組み立てとは、パラメータ部分を「?」などの記号で示しておき、後に、そこへ実際 の値を機械的な処理で割り当てる方法です。
パラメータ部分を示す記号「?」のことをプレースホルダと呼び、そこへ実際の値を割り当てるこ とを「バインドする」と呼びます。プレースホルダのことを「バインド変数」と呼ぶこともあります。
静的プレースホルダ
プレースホルダのままの SQL 文をデータベースエンジン側にあらかじめ送信して、実行前に、 SQL 文の構文解析などの準備をしておく方式です。SQL 実行の段階で、実際のパラメータの値をデータ ベースエンジン側に送信し、データベースエンジン側がバインド処理します。
動的プレースホルダ
動的プレースホルダは準備された文(Prepared Statement)とは異なり、プレースホルダを利用するもの の、パラメータのバインド処理をデータベースエンジン側で行うのではなく、アプリケーション側のライブラ リ内で実行する方式です。
- SQL組み立てはアプリ側で行う。
- クライアントサイドのプリペアードステートメントと呼ばれる。
- プレースホルダでのバインド処理を機械的に処理するのでエスケープ漏れを防止できる。
- セキュリティ面では静的プレースホルダに劣る。
まとめ
整理して初めて自分が行おうとしていた実装方法が「動的プレースホルダ」だったのだと理解できました。 静的プレースホルダはなんだか難しそうな印象...また必要になったら調べてみます。