我在从数据库中选择PDO时遇到一些问题,以便根据文章(实际上是页面)生成动态站点地图文件。 PHP没有丢失任何错误,因为我没有在错误日志中看到任何错误。这是代码。
SELECT STATEMENT SNIPPET
$q = $db->prepare("SELECT * FROM articles ORDER BY aid ASC");
$r = $q->fetchAll(PDO::FETCH_ASSOC);
FOR EACH SNIPPET + XML
foreach($r as $row) {
$format_date = date('Y-m-d', $row['date']);
$format_slug = strtolower($row['slug']);
echo '
<url>
<loc>'.$format_slug.'</loc>
<lastmod>'.$format_date.'</lastmod>
<changefreq>monthly</changefreq>
</url>
';
}
以前的XML数据&#34; FOREACH&#34;
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc></loc>
<lastmod>2017-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>contact-us</loc>
<lastmod>2017-01-27</lastmod>
<changefreq>yearly</changefreq>
</url>
';
以后的XML数据&#34; FOREACH&#34;
echo '</urlset>';
我在页面的最顶部使用适当的PHP标头来输出
header('Content-Type: text/xml');
因此,我导航到Sitemap网址,返回echo语句中的预定义数据,在这种情况下, BEFORE&#34; FOREACH&#34; 部分中的2个数据片段和当然会返回 AFTER&#34; FOREACH&#34; 。
然而,由于一些奇怪的原因,没有数据从数据库中获取,即使是真相,脚本似乎也能正常工作。我错过了什么吗?
答案 0 :(得分:4)
您需要执行该声明。
$q = $db->prepare("SELECT * FROM articles ORDER BY aid ASC");
$q->execute();
$r = $q->fetchAll(PDO::FETCH_ASSOC);
或者,您可以使用PDO :: query http://php.net/manual/en/pdo.query.php。
答案 1 :(得分:0)
您是否忘记在Execute
上致电statement
?