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

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

Linda Hamilton
发布: 2024-12-18 04:38:15
原创
764 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板