[英]I want to fetch data from twig for more than one object from the database in PDO [duplicate]
这是我从数据库中获取数据的方法代码。 我将这些数据作为对象传递以在 html 文件中使用。
* Get news details
*
* @return object
*/
public static function getNews()
{
$sql = 'SELECT * FROM news
ORDER BY date DESC';
$db = static::getDB();
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_CLASS, get_called_class());
$stmt->execute();
$news = $stmt->fetch();
return $news;
}
现在,这是我的索引页面渲染函数getNews()
是News
类的方法:
* Show the index page
*
* @return void
*/
public function indexAction()
{
$news = new News();
$news = $news::getNews();
View::renderTemplate('Home/index.html', [
'news' => $news
]);
}
获得新闻对象后......我想根据降序时间戳添加帖子。 我遇到的问题是$news
没有获取整个表的数据。 它只显示最新对象的数据。
<div class="row">
{% for eachnews in news %}
<div class="col-4 mt-4">
<div class="card" style="width: 18rem;">
<img src="/uploads/news/{{ eachnews.fullfilename }}" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">{{ eachnews.title }}</h5>
<p class="card-text">{{ eachnews.description }}</p>
<a href="news" class="btn btn-primary">Read More</a>
</div>
</div>
</div>
{% endfor %}
</div>
每一个建议和答案都受到高度赞赏。 如果我的问题不清楚,请问我。
您正在使用PDO::fetch()
,它只返回一条记录。 您需要使用PDO::fetchAll()
来获取...所有记录。
public static function getNews()
{
$sql = 'SELECT * FROM news
ORDER BY date DESC';
$db = static::getDB();
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_CLASS, get_called_class());
$stmt->execute();
$news = $stmt->fetchAll();
return $news;
}
请参阅PDO::fetch()
和PDO::fetchAll()
文档页面。
顺便说一句,在这种非常特殊的情况下,您不需要准备声明,因为:
因此,您可以简单地使用PDO::query()
:
public static function getNews()
{
$sql = 'SELECT * FROM news
ORDER BY date DESC';
$db = static::getDB();
return $db->query($sql, PDO::FETCH_CLASS, get_called_class());
}
如果您需要注入用户输入(用户可能修改的输入,如 URL 参数、表单输入等),切勿使用此方法。 此外,当您需要多次执行查询(例如,使用不同的参数)时,准备好的语句具有更好的性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.