我遇到了php问题。 我必须发送一个带有ajax请求的POST表单的SQL查询。 此查询类似于:
SELECT * FROM table WHERE field LIKE '%512%'
问题是当我从php中的POST var收回此查询时,它显示:
SELECT * FROM table WHERE field LIKE 'Q2%'
它显然失败了......
我尝试改为utf-8它没有改变任何东西。
Javascript似乎发送了正确的文本,但php在阅读POST时更改了它。
我是否可以阻止php以ascii代码读取%51?
以防万一,该网站使用Code Igniter编写。
由于
答案 0 :(得分:1)
%51
恰好代表此编码中的“Q”。在HTTP请求中发送数据时,您需要对数据进行正确编码,例如使用encodeURIComponent()
。如果您要发送“%51”,则需要实际发送%2551
。具体细节取决于您如何准确发送数据。另请考虑阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text)。
答案 1 :(得分:0)
虽然您可以使用%25512%
,但我同意deceze。
使用%25
将被解释为%
符号
所以请使用%25Your number
答案 2 :(得分:0)
POST数据:URL编码用“%”后跟两个十六进制数字替换不安全的ASCII字符 第一:使用javascript函数编码数据。
var res = encodeURI("SELECT * FROM table WHERE field LIKE '%512%'");
然后使用ajax发送数据。
在PHP中,使用函数解码数据:
$data=urldecode(string $_POST['yourdata']);
有关详细信息,您可以浏览以下链接: