ここで何が起こっているのか本当にわかりません。ブログに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
}
?>