PHP/MySQL:为什么我的查询只返回第一行?

Chu*_*utt 3 php mysql arrays methods

为什么我的方法只返回表格的第一行?我无法理解为什么,它让我疯狂.我确信这很简单.

public function getTitlesForRegistrationForm() {
    $result = $this->_db->query("SELECT UserTitleID, UserTitleName FROM UserTitles");
    $i=0;
    $array[0] = "No result";
    foreach($result->fetch(PDO::FETCH_ASSOC) as $row){
        $array[$i] = $row;
        $i++;
    }
    return $array;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jus*_*iey 7

这可能是因为您的$result->fetch()调用不返回可迭代值,而是返回结果行或FALSE.PHP foreach仅适用于可迭代值.将代码更新为类似的东西应该可以解决问题:

public function getTitlesForRegistrationForm() {
    $result = $this->_db->query("SELECT UserTitleID, UserTitleName FROM UserTitles");
    $i=0;
    $array[0] = "No result";
    while (($row = $result->fetch(PDO::FETCH_ASSOC)) !== FALSE) {
        $array[$i] = $row;
        $i++;
    }
    return $array;
}
Run Code Online (Sandbox Code Playgroud)