ホームページ > データベース > mysql チュートリアル > さまざまな数の引数を使用して条項でSQLをパラメーター化する方法は?

さまざまな数の引数を使用して条項でSQLをパラメーター化する方法は?

Patricia Arquette
リリース: 2025-01-25 16:32:09
オリジナル
312 人が閲覧しました

How to Parameterize SQL IN Clauses with a Variable Number of Arguments?

句のsat sql、変数パラメーターを扱います

SQLが脆弱性を注入するのを防ぐために、IN句にSQLを含むパラメーター化が重要です。ただし、可変数量パラメーターを処理すると、これは複雑になる可能性があります。以下は、SQL Server 2008でこの問題を解決する方法です。

C#パラメーター化の各パラメーターを使用して、次の方法を使用できます。

このコードは、指定された数のパラメーターを含むクラスでパラメーター化されたパラメーターを作成します。結果は次のとおりです

<code class="language-csharp">string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };
string cmdText = "SELECT * FROM Tags WHERE Name IN ({0})";

string[] paramNames = tags.Select(
    (s, i) => "@tag" + i.ToString()
).ToArray();

string inClause = string.Join(", ", paramNames);
using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause)))
{
    for (int i = 0; i < tags.Length; i++)
    {
        cmd.Parameters.AddWithValue(paramNames[i], tags[i]);
    }
    // ... 执行查询 ...
}</code>
ログイン後にコピー

cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"

cmd.Parameters["@tag0"] = "ruby" 注入されたテキストはユーザー入力に基づいておらず、固定値のみが含まれているため、このソリューションはSQLインジェクションリスクを引き起こさないことに注意することが重要です。ユーザーはパラメーターに安全に入力します。

キャッシュクエリプランは有益かもしれませんが、このような単純なクエリには常に大きな利点をもたらすことはできません。ただし、SQL Server 7バージョンから始めて、SQL Serverは自動的にパラメータリークエリを行い、セキュリティに対するパラメーター化の重要性を強調します。 cmd.Parameters["@tag1"] = "rails"

以上がさまざまな数の引数を使用して条項でSQLをパラメーター化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート