此问题已经在这里有了答案:
我有一个合作社(用户),可以发布许多新闻提要,所以一对多关系。我的目标是在列表中显示合作社的所有新闻源,并使用该列表将每个新闻源链接到更新和删除页面。但是,我的代码仅显示第一个新闻提要,并且由于我将其放入循环中,因此第一个新闻提要被循环了六次。这是为什么?
我使用$ loggerUser ['coopID']以获取提供给viewCoopNewsfeed函数的where子句的coopID。
这是我的sql命令
function viewCoopNewsfeed($coopID)
{
try {
$connection = connect();
$statement = $connection->prepare("SELECT * FROM newsfeed WHERE
coopID = :coopID");
$statement->bindParam(":coopID", $coopID);
$statement->execute();
$statement->setFetchMode(PDO::FETCH_ASSOC);
if ($coopNewsfeed = $statement->fetch()) {
return $coopNewsfeed;
} else {
return NULL;
}
} catch (PDOException $exception) {
die("Error: " . $exception->getMessage());
}
}
这是视图中的循环
<?php
if(!empty($coopNewsfeeds))
{
foreach($coopNewsfeeds as $coopNewsfeed)
{
?>
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Photo</label>
<img class="profile-pic" src="<?=$coopNewsfeeds['photo']?>"/>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label>Title</label>
<input type="text" class="form-control" placeholder="Title" name="title" value="<?=$coopNewsfeeds['title']?>" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Body</label>
<textarea class="form-control" name="Body" value="<?=$coopNewsfeeds['Body']?>" placeholder="Body" id="" cols="30" rows="2"></textarea>
</div>
</div>
</form>
<?php
}
?>
<?php
}
?>
$coopNewsfeed = $statement->fetch()
这将获取next结果(您的情况下的第一个结果,因为您仅执行过fetch()
一次)。由于您在此语句后立即返回$coopNewsfeed
,因此仅获得1行。
改为使用fetchAll()
。
fetchAll()