【问题标题】:percent sign in PHP stringPHP字符串中的百分号
【发布时间】: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 显示的查询可能不是您想要的,但也不应该产生服务器错误;这里可能发生的事情比眼前发生的要多。

标签: php string echo


【解决方案1】:

感谢您的回复。 我的问题是,$_REQUEST['var1'] 是一个数字。 %number 在 HTML 下解析。 对于错误 500,这是我的代码中的错误。

【讨论】:

    【解决方案2】:

    将值分配给变量。

    $variable = $_REQUEST['var1'];  
    $query = "SELECT field1 from table_name where field2 like '%".$variable."%'";
    

    此查询已经过测试并且可以正常工作。

    【讨论】:

    • 未经消毒请勿使用!这使得转储整个数据库变得像几个引号一样简单!
    猜你喜欢
    • 2015-11-05
    • 2013-05-02
    • 2015-11-17
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多