运行服务器端的PHP脚本来处理来自Java应用程序的查询。该表有450个结果应该返回,但由于某种原因,它将进入no business found声明..
用于测试我在Android应用程序中使用以下val发送HTTPGet上的信息
varQuery2是一个String和=状态 varQuery1是一个String和= MS
<?php
$result = mysql_query("SELECT * FROM businessdata WHERE '"
. mysql_real_escape_string($_REQUEST['varQuery2'])."' = '"
. mysql_real_escape_string($_REQUEST['varQuery1'])."'") or die(mysql_error());
// check for empty result
if (mysql_num_rows($result) > 0) {
// looping through all results
// businesses node
$response["businesses"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$business = array();
$business["bid"] = $row["idbusinessData"];
$business["name"] = $row["name"];
$business["owner"] = $row["owner"];
$business["phone_main"] = $row["phone_main"];
array_push($response["businesses"], $business);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
} else {
// no businesses found
$response["success"] = 0;
$response["message"] = "No businesses found";
// echo no users JSON
echo json_encode($response);
}
?>
为什么会失败以及如何解决这个问题?另请注意,整个脚本在选择中使用静态='MS'...即使我从浏览器窗口调用它:
http://address/scriptName.php?varQuery2=state+varQuery1=MS
我仍然得到相同的No Business Found回复..
根据评论,以下是此处使用的表格。
CREATE TABLE `test`.`businessData` (
`idbusinessData` INT NOT NULL AUTO_INCREMENT ,
`name` CHAR(255) NULL ,
`owner` CHAR(255) NULL ,
`phone_main` CHAR(10) NULL ,
PRIMARY KEY (`idbusinessData`) );
稍微更新,看看我是否走在正确的轨道上:
switch ($_GET){
case "state":
$result = mysql_query("SELECT * FROM businessdata WHERE state = '" . mysql_real_escape_string($_REQUEST['varQuery1'])."'") or die(mysql_error());
case "zip";
// zipcode results
case "nothing";
// default results
}
答案 0 :(得分:3)
您正在尝试选择"state" = "MS"
的每个商家,每次都是假的(您将两个字符串相互比较)。
您应避免将列名作为GET请求的一部分。相反,请考虑为您要查询的每个列使用特定的GET字段(例如search.php?state=MS
),然后根据提供的参数构建查询。