而循环和 foreach 循环未按预期的 MVC 应用程序工作



我有一个包含大量电影的表格,我想回声所有这些电影。但是我的循环出了点问题,所以我只是得到了第一部电影。

这是我的电影模型中的代码。

public function getMovieList() {
        $test = new DbConnection();
        $dbh = $test->dbcon('localhost', 'root', '6662257', 'mvc');
        $sql = $dbh->prepare("SELECT * FROM movies ORDER BY movie_id");
        $sql->execute();
        while($row = $sql->fetch()){    
            $title = $row['movie_title'];
            $description = $row['movie_des'];
            $link = $row['movie_link'];
        return array(
        $title => new Movie($title, $description, $link) 
        );
        }
    }

这是我的电影列表中的代码:

echo '<h1>Movies of 2014</h1>';
    foreach ($movies as $title => $movie) {
        echo '<div class="content"><a href="index.php?movie='.$movie->title.'">'.$movie->title.'</a><br/>'.$movie->description.'</div>';
    }

它仍然只是呼应了我数据库中的第一部电影。我是MVC的新手,所以我无法弄清楚问题出在哪里。我感谢任何形式的帮助。

你只从 while 循环的第一次迭代返回,考虑填充一个数组并返回:

    $movies = array();
    while($row = $sql->fetch()){    
        $title = $row['movie_title'];
        $description = $row['movie_des'];
        $link = $row['movie_link'];
        $movies[] = new Movie($title, $description, $link);
    }
    return $movies;

你在循环中使用return。这将导致函数结束,因此只返回查询中的第一部电影。

提取成这样的东西,你就可以开始了。

public function getMovieList() {
    $test = new DbConnection();
    $dbh = $test->dbcon('localhost', 'root', '6662257', 'mvc');
    $sql = $dbh->prepare("SELECT * FROM movies ORDER BY movie_id");
    $sql->execute();
    $movies = array();
    while($row = $sql->fetch()){    
        $title = $row['movie_title'];
        $description = $row['movie_des'];
        $link = $row['movie_link'];
        $movies[$title] = new Movie($title, $description, $link);
    }
    return $movies;
}

你必须在函数上是新手,而不是在MVC:)

函数只有一个返回值。

for ($i = 0; $i<1000; $i++) {
    return $i;
}

将在第一次迭代时返回,函数将停止。

您需要返回数组并使用循环来迭代函数

while (condition) {
    $movie[$title] = new Movie($title, $description, $link)
}
return $movie;

最新更新