我需要通过URL来传递特殊符号为我的MySQL查询。例如,我需要有一个URL,它是这样的:使用urldecode()导致MySQL错误
www.example.com/index.php?q=AND name LIKE '%hi%'
当我试着将它首先,我得到了一个406错误。我查了一下,显然我必须使用urlencode()
和urldecode()
。我把那些和406错误走了,但后来我得到了一个MySQL错误:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource
通常当我得到这些就意味着查询不正确写入。所以我回应MySQL查询,并且一切都很好。我甚至删除了urldecode()
,并将其硬编码到我想传递给页面的变量中,并且MySQL错误消失了。但是,使用urldecode()
而不使用这两个查询完全相同,所以我有点困惑。
我去到php.net文档页面urldecode()
,并有一个警告,说的一样使用_GET
和urldecode()
在一起,可能会导致意想不到的事情,这已经_GET
充当解码器(或者至少这是怎么我理解的措辞),所以我删除urldecode()
但在_GET
仍留下,而导致不能被解码的文本,所以我想我没有正确解释文档。
是urldecode()
不与MySQL查询兼容?我相当肯定这是编码/解码的问题,因为我已经用绕过编码/解码的硬编码信息测试了我的代码,并且它工作正常。也许urldecode()
是以某种方式将字符转换为特殊的字符,看起来相同但内部不同,所以MySQL无法读取它们?
你是...使用SQL注入作为功能? – 2012-07-18 16:47:48
您可能想要检查http://xkcd.com/327 – 2012-07-18 19:13:52