首页 >数据库 >mysql教程 >当列名可变时,如何动态构建具有参数化值的 SQL 查询?

当列名可变时,如何动态构建具有参数化值的 SQL 查询?

Linda Hamilton
Linda Hamilton原创
2024-12-18 04:38:15711浏览

How Can I Dynamically Build SQL Queries with Parameterized Values When Column Names Are Variable?

由于参数限制而构建动态查询

在执行涉及动态列名的查询时,开发者可能会遇到列名无法参数化的限制。要避免此问题,必须在运行时动态构建查询。

考虑以下非工作示例:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn