PHP while循环从数据库获取发布数据

标签 php mysql sql loops while-loop

我正在从头开始创建自己的博客,其主页按发布时间顺序加载最新帖子。我使用前端 Controller 调用帖子并将数据存储在 MySQL 数据库中。该网站本身很棒,所有帖子都可以完美加载,没有任何问题。问题是让主页正常工作。

我为主页创建了一些 PHP 函数。他们通常按 ID 按降序对帖子(数据库行)进行排序,因为它是自动增量字段,并调用他们的数据。然后通过从数据库的最顶行(即最新帖子)获取数据,将最新帖子显示为顶部的“精选帖子”。

效果很好 - 当我回显结果时,它会按照我想要的方式显示最新的帖子。

在下面,我想要两个并排的框,用于第一个帖子之前的两个帖子。所以我做了这个函数来调用它们:

function fetch_rest_posts_1($conn) {

$stuff = $conn->query("SELECT * FROM table WHERE is_post = 1 ORDER BY id DESC LIMIT 1,2");

    while ($row = $stuff->fetch_array()) {
        $i=1;
        return '<div id="post_'.$i.'" style="width:308px;height:215px;padding:5px">
                <h2>'.$row['title'].'</h2>
                <p>'.date('d/m/Y',strtotime($row['published_date'])).' by '.$row['author'].' | <a href="http://www.domainname.com/'.$row['uri'].'#disqus_thread"></a></p>
                <p>'.$row['meta_description'].'</p>
                </div>';
                $i++;

    } // style="white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis"

}

当我回显结果时,它确实工作得很好,显示了我想要的一切,但它只显示了一个 div,而不是两个。当我获取 SQL 查询并将其直接输入 phpMyAdmin 时,它给了我两行。我是不是做错了什么?

(我将自动增加的 $i 放在那里,以便我可以隔离每个框并稍后更改样式。)

最佳答案

您的问题是由循环中的 return 语句引起的。您应该在函数顶部添加 $return = '',将 return 替换为 $result .=,然后 return $结果位于函数末尾。

此外,循环计数器 $i 在每次迭代中都会重置。将初始分配移出循环。

编辑: .= 有意附加到 $result,而不是用从下一个数据集构造的另一个值替换它。

关于PHP while循环从数据库获取发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25920227/

相关文章:

php - 创建 torrent 文件的信息哈希时出现问题

php - 数据库中的数字拒绝相加/相乘

sql - 递归CTE查找父记录

php - 消息: Trying to get property of non-object mvc framework Codeigniter

MySQL TRIGGER NEW.date=NOW() 在除 `id` 和 `name` 之外的任何列更新

php - 如何调用RestFul API中的特定方法?

php - 如果测试访问器是浪费时间,那么测试构造函数逻辑呢?

php - cURL 不再设置 cookie,但为什么呢?

mysql - "log_queries_not_using_indexes"中的查询实际上使用了索引

MySQL 按最新时间戳选择