【发布时间】:2013-04-30 13:47:19
【问题描述】:
我想对数据库进行查询:
$query="SELECT field1 from table_name where field2 like '%".$_REQUEST['var1']."%'";
页面显示 500 内部服务器错误。
在调试的时候,我回显了 $query。 就像:
SELECT field1 from table_name where field2 like 'value_of_var1%'
第一个百分号去哪儿了? 我在互联网上搜索了一些人说我必须放双百分号(%%)才能逃脱百分号。如果是这样,那为什么第二个百分号不需要转义?
此代码(查询)在 AJAX 页面中执行,为了调试我通过 URL 打开了该 AJAX 页面。 它正在显示完美的结果
SELECT field1 from table_name where field2 like '%value_of_var1%'
但是当通过 AJAX 调用页面时,它显示没有第一个百分号。 你能帮我理解一下真正的问题是什么吗?
【问题讨论】:
-
您需要对查询进行 urlencode,因为 '%' 已经是任何 urlencoded char 的“起始码”。
%20例如会变成一个空格。 -
试试这个更简单的表单
$query = "SELECT field1 from table_name where field2 like '%{$_REQUEST['var1']}%";。这样你就不必处理字符串连接了。 -
在浏览器中查看网页的HTML源代码。您的查询如何在那里显示?您是否仍然注意到缺少字符?
-
如果您在执行查询时收到 500 错误,您应该检查错误日志(或打开错误报告和 display_errors)并查看完整的错误文本。
echo显示的查询可能不是您想要的,但也不应该产生服务器错误;这里可能发生的事情比眼前发生的要多。