Php 而循环和foreach循环不能像预期的mvc应用程序那样工作

Php 而循环和foreach循环不能像预期的mvc应用程序那样工作,php,foreach,while-loop,Php,Foreach,While Loop,我有一张桌子,里面放着一堆电影,我想把它们全部放出来。但是我的循环出了点问题,所以我刚拍了第一部电影 这是我电影模型中的代码 public function getMovieList() { $test = new DbConnection(); $dbh = $test->dbcon('localhost', 'root', '6662257', 'mvc'); $sql = $dbh->prepare("SELECT * FROM

我有一张桌子,里面放着一堆电影,我想把它们全部放出来。但是我的循环出了点问题,所以我刚拍了第一部电影

这是我电影模型中的代码

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>';
    }
echo“2014年电影”;
foreach($title=>$movie形式的电影){
回显“
”。$movie->description.”; }

它仍然是我数据库中的第一部电影的回声。我是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();

    $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;
}

您只返回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;

你必须是新的功能,而不是MVC:)

函数只有一个返回值

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

添加一些上下文来解释为什么这是有效的。只能从函数返回一次。因此,您需要构建一个包含所有电影对象的数组,并返回它。我明白了,我不知道呵呵。这个结果绝对完美,非常感谢,我会尽快接受你的回答@ThomasRuiz$movies是数组,而不是对象:)您必须返回$movies而不使用
()
,这与MVC模式无关。
while (condition) {
    $movie[$title] = new Movie($title, $description, $link)
}
return $movie;