首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP和SQL空间问题

PHP和SQL空间问题
EN

Stack Overflow用户
提问于 2014-12-13 03:23:15
回答 1查看 271关注 0票数 0

我有一个奇怪的问题,看看下面的代码:

代码语言:javascript
运行
复制
$query="SELECT device_name, ip, method, port
        FROM devices
        WHERE device_name='".$_POST['name']."'";

当我在'name‘-> 'test’(不带空格的文本)中发布时,它可以工作(返回一些我想要的值)。但是在这种情况下,例如'name‘-> ' test’(带空格的文本),它会返回空值,但不应该返回空值。

最后,当我尝试这样做时:

代码语言:javascript
运行
复制
$query="SELECT device_name, ip, method, port
        FROM devices
        WHERE device_name='test test'";

它返回了我想要的值。

为什么在我的SQL代码中使用$_POST['name']会出问题?当然,我已经尝试过将$_POST['name']保存在一个变量中,然后将它放入SQL代码中,也是使用( `` )( [ ] )('')不能做到这一点。我正在和MySQL一起工作。

有什么想法吗?

$_POST“‘name”的var_dump()

代码语言:javascript
运行
复制
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'WIM'</font> <i>(length=3)</i>

我看到了,$_POST‘’name‘只包含空格后面的单词。为什么?

EN

回答 1

Stack Overflow用户

发布于 2014-12-13 03:29:25

最有可能的是,$_POST['name']实际上不是test test,因为如果它是,并且您所说的其余部分是真的,那么它是有效的。

这就是说:,不这样做

从不将$_POST变量(或来自“外部”的任何其他未经验证的数据)直接放入查询字符串中。它为你打开了SQL injection的大门。您应该使用准备好的语句,请阅读PDOMySQLi

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

https://stackoverflow.com/questions/27450691

复制
相关文章

相似问题

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