这段代码只返回数组中第一行的原因是什么?

时间:2016-10-31 09:41:55

标签: php mysqli

我正在为我的应用创建一个'Drill-Down'UITable。

用户将选择'country' > 'division' > 'team'。每个当前在我的数据库中作为单独的表存在,并通过id链接。

我编写了一个PHP函数来获取每个表的详细信息,并将它们放在一个数组中,以便发送到swift以便在UITable中使用。

但是,此代码目前仅输出:

  

{ “国家”:[{ “ID”: “1”, “名称”: “丹麦”}], “部门”:[{ “ID”: “1”, “COUNTRY_ID”: “1”, “姓名”:“ALKA SUPERLIGA”}],“团队”:[{“id”:“1”,“division_id”:“1”,“name”:null}]}

我希望这能找回所有内容

    $countries = array();
    $countries = getCountries($countries);

    $divisions = array();
    $divisions = getDivisions($divisions);

    $teams = array();
    $teams = Teams($teams);

    public function getCountries()
        {
        $returnValue = array();
        $sql = "select * from countries";

        $result = $this->conn->query($sql);
        if($result != null && (mysqli_num_rows($result) >= 1)){
            $row = $result -> fetch_array(MYSQLI_ASSOC);
            if(!empty($row)){
                $returnValue[] = $row;
            }
        }
        return $returnValue;

    }

    public function getDivisions()
    {
        $returnValue = array();
        $sql = "select * from divisions";

        $result = $this->conn->query($sql);
        if($result != null && (mysqli_num_rows($result) >= 1)){
            $row = $result -> fetch_array(MYSQLI_ASSOC);
            if(!empty($row)){
                $returnValue[] = $row;
            }
        }
        return $returnValue;

    }

    public function getTeams()
    {
        $returnValue = array();
        $sql = "select * from teams";

        $result = $this->conn->query($sql);
        if($result != null && (mysqli_num_rows($result) >= 1)){
            $row = $result -> fetch_array(MYSQLI_ASSOC);
            if(!empty($row)){
                $returnValue[] = $row;
            }
        }
        return $returnValue;

    }

    echo json_encode(array('countries' => $countries,'divisions' => $divisions,'teams' => $teams));

只打印第一行的原因是什么?

在次要说明中,团队中的null应该说'BrøndbyIF' - 是否由于特殊字符而将其踢出?

1 个答案:

答案 0 :(得分:2)

您实际上并没有遍历从数据库返回的行。 fetch_array将单个结果行作为数组提取。尝试类似:

        while ($row = $result -> fetch_array(MYSQLI_ASSOC)) {
          $returnValue[] = $row;
        }