Use variable parameter parameters SQL IN clauses
When constructing an SQL query with an in clause with acceptable quantities, it is critical to maintain data security and avoid injection vulnerabilities. An effective implementation method is parameterized.
Parameterized IN clause
For the query given by parameterization, we can allocate a unique parameter name for each parameter:
In the cycle, we can dynamically generate the IN clause and add the corresponding parameters with a specified value:
<code class="language-sql">SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3) ORDER BY Count DESC</code>
This method ensures that the user input will not be inserted directly into the SQL statement, thereby reducing the risk of injection.
<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>
The above is the detailed content of How to Securely Parameterize SQL IN Clauses with Variable Arguments?. For more information, please follow other related articles on the PHP Chinese website!