インジェクションを防ぐためにパラメーター化されたクエリを利用するコードがいくつかありますが、テーブルの構造に関係なくクエリを動的に構築できる必要もあります。これを行う適切な方法は何ですか?
以下に例を示します。名前、住所、電話の列を持つテーブルがあるとします。Show Columnsを実行し、選択ドロップダウンにオプションとして入力するWeb ページがあります。
次に、 Searchというテキストボックスがあります。このテキストボックスはパラメータとして使用されます。
現在、私のコードは次のようになっています。
結果 = pquery('SELECT * FROM 連絡先 WHERE `' + エスケープ (列) + '`=?', 検索);
私はそれから不快感を覚えます。パラメータ化されたクエリを使用している理由は、エスケープの使用を避けるためです。また、エスケープは、列名をエスケープするように設計されていない可能性があります。
これが意図したとおりに機能することを確認するにはどうすればよいですか?
編集: 動的クエリが必要な理由は、スキーマがユーザー設定可能であり、ハードコーディングされたものを修正するつもりはないからです。