1

我在尝试使用 PDO 获取函数从我的数据库中获取信息时遇到了错误。我想获取最后 10 行,但我希望从所有列中获取数据,但是通过拆分信息而不将其放在表中。

第一个错误是我没有通过使用此代码收到任何输出。

第二个错误是,如果数据库中没有数据,我想避免显示 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>
4

1 回答 1

0

让我们一次拿这些。

第一个错误是我没有通过使用此代码收到任何输出。

不确定这个。我以为我在你的代码中发现了一个错误,但事实并非如此......


第二个错误是,如果数据库中没有数据,我想避免显示 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();  
?>
于 2013-07-27T19:00:21.850 回答