PHP mysqli_query返回0结果,即使它应该是450

时间:2012-10-22 07:58:21

标签: php android mysql

运行服务器端的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
}

1 个答案:

答案 0 :(得分:3)

您正在尝试选择"state" = "MS"的每个商家,每次都是假的(您将两个字符串相互比较)。

您应避免将列名作为GET请求的一部分。相反,请考虑为您要查询的每个列使用特定的GET字段(例如search.php?state=MS),然后根据提供的参数构建查询。