Maison >base de données >tutoriel mysql >Comment paramétrer les clauses SQL IN avec un nombre variable d'arguments ?

Comment paramétrer les clauses SQL IN avec un nombre variable d'arguments ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 16:32:09370parcourir

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

SAT SQL dans la clause, traitez les paramètres variables

Pour empêcher SQL d'injecter des vulnérabilités, le paramétrage contenant SQL dans la clause In est crucial. Cependant, lors du traitement des paramètres de quantité variable, cela peut se compliquer. Ce qui suit est la méthode de résolution de ce problème dans SQL Server 2008:

Utiliser le paramétrage C # Chaque paramètre, vous pouvez utiliser les méthodes suivantes:

Ce code crée un paramétré dans les classes qui contiennent un nombre spécifié de paramètres. Le résultat est:
<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"

cmd.Parameters["@tag1"] = "rails"

Il est important de noter que cette solution ne provoque pas de risque d'injection SQL car le texte injecté n'est pas basé sur l'entrée de l'utilisateur et ne contient que des valeurs fixes. Les utilisateurs entrent en toute sécurité dans les paramètres.

cmd.Parameters["@tag2"] = "scruffy" Bien que le plan de requête de cache puisse être bénéfique, ils ne peuvent pas toujours fournir des avantages significatifs pour une question simple comme celle-ci. Cependant, en commençant par la version SQL Server 7, SQL Server interroge automatiquement, mettant en évidence l'importance de la paramétrage pour la sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn