パラメータ制限による動的クエリの構築
開発者は、動的列名を含むクエリの実行中に、列名をパラメータ化できないという制限に遭遇する可能性があります。 。この問題を回避するには、実行時にクエリを動的に構築する必要があります。
次の機能しない例を考えてみましょう:
SqlCommand command = new SqlCommand("SELECT @slot FROM Users WHERE name=@name; "); prikaz.Parameters.AddWithValue("name", name); prikaz.Parameters.AddWithValue("slot", slot);
代わりに、「スロット」入力をホワイトリストに登録します。インジェクション攻撃を防止し、次のようにクエリを構築します:
// TODO: verify that "slot" is an approved/expected value SqlCommand command = new SqlCommand("SELECT [" + slot + "] FROM Users WHERE name=@name; ") prikaz.Parameters.AddWithValue("name", name);
このアプローチにより、「@name」は動的にパラメータ化されたままになります。変数列名の処理
以上が列名が可変の場合、パラメータ化された値を使用して SQL クエリを動的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。