小Json Web服务SQL问题

时间:2015-04-23 16:39:11

标签: php json

我有一个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();
        }
?>

它工作正常,并搜索一个或另一个或两个变量,但如果没有传递参数,它会在响应中返回[]。

感谢。

1 个答案:

答案 0 :(得分:0)

您必须更改条件才能处理默认情况。您需要将其更改为

if (empty($region) && !empty($type)) { /*...*/ }
elseif(!empty($region) && empty($type)) { /*...*/ }
elseif(!empty($region) && !empty($type)) { /*...*/ }
else { /*...*/ }

否则,当您不提供参数时,您将始终点击第一个分支。