SQLクイズ
SQLのプレースホルダーを使う主な目的として、最も適切なものはどれですか?
解説
SQLのプレースホルダーとは、SQL文の中で後から値を渡す位置を表す記号です。たとえば、ユーザーIDを条件に検索する場合は、SELECT * FROM users WHERE id = ? のように ? を置き、実行時に値を別途渡します。ライブラリによっては ? の代わりに :id のような名前付きプレースホルダーを使うこともあります。主な目的は、SQL文の構造と外部から受け取る値を分離することです。文字列連結で WHERE id = ' + input のようにSQLを組み立てると、入力内容によってSQLの意味そのものが変わる可能性があります。これがSQLインジェクションにつながります。プレースホルダーを使うと、渡した値はSQLの命令ではなく、原則として単なるデータとして扱われます。ただし、プレースホルダーで置き換えられるのは基本的に値です。テーブル名、列名、並び順のASC・DESCなど、SQLの構造に関わる部分をそのままプレースホルダーにすることはできません。そのような値を動的に扱う必要がある場合は、許可する候補をあらかじめ限定して選ぶ必要があります。