PHP简单的foreach循环不起作用

时间:2015-10-11 16:35:38

标签: php mysql pdo foreach

我正在尝试执行一个简单的foreach循环,但它只打印出一行,而不是db中的两行(我试图将其他行放入db但只得到第一行,我找不到错误。

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

    $sql = "SELECT flyer_url FROM films LIMIT 30";

    $films = $dbh->query($sql);

    $result = $films->fetch(PDO::FETCH_ASSOC);

    foreach($result as $row) {

        print "<img src='" . $row . "' style='width:200px;'>" ;

    }

    $dbh = null;
}
catch (PDOexception $e) {
    echo "Error: " . $e-> etmessage() . '<br/>Contact the System Administrator.';
}

假设DB conf数据在config.php中并且已成功加载。

我正在尝试制作个人电影DB,并展示每部电影的节目单。

3 个答案:

答案 0 :(得分:3)

更改

$result = $films->fetch(PDO::FETCH_ASSOC);

$result = $films->fetchAll(PDO::FETCH_ASSOC);

答案 1 :(得分:2)

在您的情况下,

fetch会返回单行 - 表示为关联数组。为了获得所有行,您必须继续迭代fetch的结果:

while($row = $films->fetch(PDO::FETCH_ASSOC)) {
    print "<img src='" . $row['flyer_url'] . "' style='width:200px;'>" ;
}

答案 2 :(得分:1)

你为什么不这样做?

$data="";
foreach($result as $row) { 
$data .= "<img src='" . $row['flyer_url'] . "' style='width:200px;'>" ; 
}

这将连接字符串,并将在foreach循环外提供组合结果。