首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用变量列名进行选择时如何防止SQL注入

使用变量列名进行选择时如何防止SQL注入
EN

Stack Overflow用户
提问于 2015-07-20 05:49:50
回答 1查看 193关注 0票数 0

我正在尝试阻止Select语句中的SQL注入。当这仅仅是关于值(这里类似的部分)时,我使用"bind_param“,如下面的示例所示,该示例按预期工作。

但是,我对变量列名有问题,因为我不能为这个使用"bind_param“。

有人能告诉我如何防止变量列名($language)的SQL注入(当前代码正在工作)吗?

My:

代码语言:javascript
复制
$language = "some language";
$location = "some location";
// ...

$stmt = $conn->prepare("SELECT tID, " . $language . " FROM Main WHERE location LIKE ? ORDER BY sortOrder, " . $language);
$stmt->bind_param("s", $location);
$stmt->execute();
// ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-20 06:01:27

无论如何,您可以选择所有列,然后尝试在结果集中使用所选语言访问列名。如果语言不正确,您将得到一个可以处理的异常。

一个更好的解决方案是将数据库设计规范化,使语言在行中而不是列中。然后,您可以使用参数化查询,而不存在任何问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31509559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档