我有一个Web服务,它读入两个变量并搜索其中一个或两个,或两者。如果两个变量都是空的,那么我想选择所有数据 - 当前没有的数据。这是网络服务:
header("Content-type: application/json");
try {
$conn = new PDO("mysql:host=localhost;dbname=treeves;", "treeves", "oopheiye");
$region = $_GET["region"];
$type = $_GET["type"];
if(empty($region)) {
$result=$conn->query("SELECT * FROM pointsofinterest WHERE type LIKE '$type'");
}
elseif(empty($type)) {
$result = $conn->query("SELECT * FROM pointsofinterest WHERE region LIKE '$region'");
}
elseif (!empty($region) && !empty($type)){
$result=$conn->query("SELECT * FROM pointsofinterest WHERE type='$type' AND region LIKE '$region'");
}
else {
$result=$conn->query("SELECT * FROM pointsofinterest");
}
$array = array();
while ($row = $result->fetch (PDO::FETCH_ASSOC))
{
$array[] = $row;
}
echo json_encode($array);
if($array === false || is_null($array)) {
throw new Exception('Could not encode JSON');
}
} catch (Exception $e)
{
echo $e->getMessage();
}
?>
它工作正常,并搜索一个或另一个或两个变量,但如果没有传递参数,它会在响应中返回[]。
感谢。
答案 0 :(得分:0)
您必须更改条件才能处理默认情况。您需要将其更改为
if (empty($region) && !empty($type)) { /*...*/ }
elseif(!empty($region) && empty($type)) { /*...*/ }
elseif(!empty($region) && !empty($type)) { /*...*/ }
else { /*...*/ }
否则,当您不提供参数时,您将始终点击第一个分支。