PDO获取函数错误并在URL中传递变量


PDO fetch function error and passing variables in URL

我在尝试使用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();  
?>