查询引号不起作用

时间:2014-09-06 22:37:36

标签: php android mysql sql request

我发送的查询字符串如下: -

String query = "select * from table where id = 12345 or id like '___1435'";
在PHP代码中

: -

$phone     = $_REQUEST['data1'];
$result = mysql_query($phone);
    return $result;

通过android但它无法正常工作。 但是查询如下: -

String query = "select * from table where id = 12345 or id = 21435";

正在运作。

我也尝试过: -

$phone     = mysql_real_escape_string($_REQUEST['data1']);
$result = mysql_query($phone);
    return $result;

可能是什么问题。 最有可能的是它与我在String中使用的引号有关。 我怎么能克服这个?

谢谢!

2 个答案:

答案 0 :(得分:0)

LIKE查询需要百分号来表示外卡,我假设您正在尝试:

id like '%___1435%'

如果您不想要这种通配符行为,那么您可以删除类似的

id = '___1435'

答案 1 :(得分:-1)

我认为问题在于您尝试在整数字段上执行字符串比较。首先尝试将您的ID字段转换为CHAR,如下所示:

select * from table where id = 12345 or CAST(id as CHAR) like '___1435'

编辑:这将是一个猜谜游戏,除非您可以a)发布一些错误日志或b)发布您的MySQL查询日志(以查看实际查询执行),您可以通过打开常规查询日志来启用你的安装。由于看起来你是通过POST接受你的查询字符串,如果字符串已经以任何方式编码(即url编码),如果没有首先正确解码,它将影响你的查询。

更好,更安全的方法是创建一个接受要查询的ID的特定Web服务,您可以将其传递到预准备语句服务器端。无论如何,这是更好的练习,因此您的系统不容易受到客户的大量开放查询的影响。