我发送的查询字符串如下: -
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中使用的引号有关。 我怎么能克服这个?
谢谢!
答案 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服务,您可以将其传递到预准备语句服务器端。无论如何,这是更好的练习,因此您的系统不容易受到客户的大量开放查询的影响。