我在尝试使用PDO获取函数从数据库中获取信息时遇到了一个错误。我想获取最后10个ROWS,但我希望从所有列中获得数据,但通过将信息拆分而不在表中。
第一个错误是我没有通过使用此代码接收ANY输出。
第二个错误是,如果数据库中没有数据,我希望避免显示DIV标记。我的意思是,如果我的博客文章少于10篇。有没有避免这种情况的声明?
我的问题是:在创建时将DIV标记存储在表中是否比将它们存储在首页index.php文件中更好?同样,这是通过URL传递变量的正确方式吗?
我正在使用这段代码来准备我的数据库,但这并不是一个大问题:
<?php
$db = new PDO(ALL MY DATABASE INFORMATION);
// FETCH posts CONTENT
$fetchblog = $db->prepare("SELECT id, title, post, date_add, url, pictures_url FROM posts ORDER BY ID desc LIMIT 10");
$fetchblog->execute();
?>
这就是我努力获得我想要的正确信息的地方。。。
<div id="blogposttitle">
<a href="www.example.com/articles?id=
<?php
$idone = $fetchblog->fetchColumn();
echo("$idone");
?>
">
<?php
$titleone = $fetchblog->fetchColumn(1);
echo("$titleone");
?>
</a>
</div>
这是我的内容:
<div id="blogpostcontent">
<?php
$contentone = $fetchblog->fetchColumn(2);
echo("$contentone");
?>
</div>
让我们一次取一个。
第一个错误是,使用此代码不会收到任何输出。
不确定这个。我以为我在你的代码中发现了一个错误,但事实并非如此…
第二个错误是,如果数据库中没有数据,我希望避免显示DIV标记。我的意思是,如果我的博客文章少于10篇。有没有避免这种情况的声明?
将您的数据库代码更改为:
$db = new PDO(ALL MY DATABASE INFORMATION);
$query = "SELECT id, title, post, date_add, url, pictures_url FROM posts ORDER BY id desc LIMIT 10";
$count_query = "SELECT COUNT(*) FROM ($query) as Count";
// GET NUMBER OF BLOG POSTS
$sth = $db->query($count_query);
$count = $sth->fetchColumn();
// FETCH posts CONTENT
$fetchblog = $db->prepare($query);
$fetchblog->execute();
然后在您的HTML中使用:
<?php
if ($count >= 10) {
$contentone = $fetchblog->fetchColumn(2);
echo "<div id='"blogpostcontent'">$contentone</div>"
}
?>
在创建时将DIV标记存储在表中比将它们存储在首页index.php文件中更好吗?
没有。这将导致灵活性降低。例如,在某些情况下,您可能希望以不同的方式使用数据,而不仅仅是将其转储到HTML中,这将导致严重的问题。
此外,这是通过URL传递变量的正确方式吗?
如果有效;o)
更新
问题可能是$fetchblog->fetchColumn()
从第一个条目获取id,然后$fetchblog->fetchColumn(1)
从下一个条目获取标题。
你最好的办法是把每件事都放在一个循环中,并像这样使用$fetchblog->fetchObject()
:
<?php
// loop through each blog entry
while($content = $fetchblog->fetchObject()) {
// show title link
echo "
<div id="blogposttitle">
<a href='"www.example.com/articles?id=$content->id);'">
$content->title
</a>
</div>";
// show post
echo "<div id='"blogpostcontent'">$content->post);</div>";
}
?>
这将遍历从数据库返回的每个条目。您还可以访问$content->date_add
、$content->url
和$content->pictures_url
。
由于循环在没有更多条目时结束,因此不需要跟踪记录的数量。因此,您可以返回到准备数据库的原始代码。
<?php
$db = new PDO(ALL MY DATABASE INFORMATION);
// FETCH posts CONTENT
$fetchblog = $db->prepare("SELECT id, title, post, date_add, url, pictures_url FROM posts ORDER BY ID desc LIMIT 10");
$fetchblog->execute();
?>