我有一个奇怪的问题,看看下面的代码:
$query="SELECT device_name, ip, method, port
FROM devices
WHERE device_name='".$_POST['name']."'";当我在'name‘-> 'test’(不带空格的文本)中发布时,它可以工作(返回一些我想要的值)。但是在这种情况下,例如'name‘-> ' test’(带空格的文本),它会返回空值,但不应该返回空值。
最后,当我尝试这样做时:
$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()
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'WIM'</font> <i>(length=3)</i>
我看到了,$_POST‘’name‘只包含空格后面的单词。为什么?
发布于 2014-12-13 03:29:25
最有可能的是,$_POST['name']实际上不是test test,因为如果它是,并且您所说的其余部分是真的,那么它是有效的。
这就是说:,不这样做
从不将$_POST变量(或来自“外部”的任何其他未经验证的数据)直接放入查询字符串中。它为你打开了SQL injection的大门。您应该使用准备好的语句,请阅读PDO或MySQLi。
https://stackoverflow.com/questions/27450691
复制相似问题