我需要通过 URL 为我的 MySQL 查询传递特殊符号。例如,我需要一个类似于以下内容的 URL:
www.example.com/index.php?q=AND name LIKE '%hi%'
当我第一次尝试时,我收到了 406 错误。我查了一下,显然我必须使用urlencode()
and urldecode()
。我把它们放进去, 406 错误消失了,但后来我得到了一个 MySQL 错误:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource
通常当我得到这些时,这意味着查询没有正确编写。所以我回应了 MySQL 查询,一切看起来都很好。我什urldecode()
至将我想要传递给页面的内容删除并硬编码到一个变量中,然后 MySQL 错误就消失了。但是,使用urldecode()
和不使用的两个查询完全相同,所以我有点困惑。
我进入了 php.net 文档页面urldecode()
,并且有一个警告说使用_GET
and urldecode()
together 可能会导致意想不到的事情,并且_GET
已经起到解码器的作用(或者至少这是我解释措辞的方式),所以我删除urldecode()
但仍留在 中_GET
,导致文本未被解码,所以我想我没有正确解释文档。
不urldecode()
兼容 MySQL 查询?我相当肯定这是编码/解码的问题,因为我已经使用绕过编码/解码的硬编码信息测试了我的代码,并且工作正常。也许urldecode()
是以某种方式将字符变成看起来相同但内部不同的特殊字符,因此 MySQL 无法读取它们?