我真的不知道这里发生了什么。我正在尝试向我的博客添加 RSS 提要。由于 RSS 要求日期为 RFC822 格式,因此我使用 PHP 日期函数来转换我的原始时间戳 (0000-00-00 00:00:00)。问题是我在提要中的所有帖子显示的日期和时间是 1970 年 1 月 1 日 01:33。这是代码:
<?php
while ($row = $query->fetch_assoc()) {
?>
<item>
<title><?php echo $row['title']; ?></title>
<description>Item description</description>
<link>http://mysite.com/blog.php<?php echo '?id='.$row['id']; ?></link>
<pubDate><?php echo date('r', $row['date_posted']); ?></pubDate>
</item>
编辑:这是我的查询。我在这里转换为 Unix 时间戳吗?
$query = $db->query("
SELECT `posts`.`id`,
`posts`.`cat_id`,
`posts`.`title`,
`posts`.`contents`,
`posts`.`date_posted`
FROM `posts`
ORDER BY `posts`.`date_posted`
DESC
LIMIT 10");
EDIT2:感谢所有的帮助,但它仍然不起作用。诚然,我不太了解这一点,但我确信有一个简单的解决方案。整个 feed.php 文档实际上并不长,所以这里是所有代码,以防我错过提及一些重要的细节。哦,日期正确存储在数据库的 date_posted 列中。
<?php
$db = new mysqli('host', 'user', 'pass', 'db');
$query = $db->query("
SELECT `posts`.`id`,
`posts`.`cat_id`,
`posts`.`title`,
`posts`.`contents`,
`posts`.`date_posted`
FROM `posts`
ORDER BY `posts`.`date_posted`
DESC
LIMIT 10");
if ($db->affected_rows >= 1) {
echo '<?xml version="1.0" encoding="iso-8859-1" ?>' ?>
<rss version="2.0">
<channel>
<title>Title</title>
<description>RSS feed</description>
<link>http://mysite.com</link>
<?php
while ($row = $query->fetch_assoc()) {
?>
<item>
<title><?php echo $row['title']; ?></title>
<description><?php echo substr($row['contents'], 0, 150) ?></description>
<link>http://mysite.com/blog.php<?php echo '?id='.$row['id']; ?></link>
<pubDate><?php echo date('r', $row['date_posted']); ?></pubDate>
</item>
<?php
}
?>
</channel>
</rss>
<?php
}
?>