【问题标题】:Display Article parameters using PHP and MYSQL by their ID通过 ID 显示使用 PHP 和 MYSQL 的文章参数
【发布时间】:2026-02-05 14:10:01
【问题描述】:

我是 mysql 和 php 的新手,我正在努力解决这个问题。我正在建立一个“类似博客”的网站只是为了学习语言,我遇到了这个问题。

我想在主页上显示与其“年龄”相关的文章。这意味着,最大的滑块应该显示最新的文章,下面的两个小文章应该是第二个和第三个最新的文章。

我会通过 ID 来做,但我真的被困在中间的某个地方。我制作了这个原型代码,它可以像我想要的那样工作,但我 100% 确信有一种更简单的方法 + 如果我想在整个主页上传播 10 篇最新文章,那么为每篇文章创建每个变量真是太疯狂了。

我愿意接受任何建议,但请注意,我仍然是 PHP 和 MYSQL 的菜鸟。谢谢。

<?php
require('connect.php');
$sql1 = mysqli_query($connect, "SELECT * FROM articles ORDER BY id DESC LIMIT 1");
$sql2 = mysqli_query($connect, "SELECT * FROM articles ORDER BY id DESC LIMIT 1,1");
$sql3 = mysqli_query($connect, "SELECT * FROM articles ORDER BY id DESC LIMIT 1,2");
$latestarticle = mysqli_fetch_array($sql1);
$secondlatestarticle = mysqli_fetch_array($sql2);
$thirdlatestarticle = mysqli_fetch_array($sql3);
?>

这是 HTML 部分

<!--First Big Slide-->
<a href="#"><?=htmlspecialchars($firstlatestarticle['name'])?></a>
<!--Small Article below-->
<a href="#"><?=htmlspecialchars($secondlatestarticle['name'])?></a>
<!--Another Small Article below-->
<a href="#"><?=htmlspecialchars($thirdlatestarticle['name'])?></a>

【问题讨论】:

  • 阅读foreach循环
  • 嘿,我在提出这个问题之前阅读了有关 while 和 foreach 循环的信息,但我发现它对这个问题没有多大用处。也许是吧,我只在 w3schools 上读过一些基本的东西。

标签: php mysql blogs


【解决方案1】:

您在这里几乎走在正确的轨道上,但实现有点偏离。

if($result = mysqli_query($connect, "SELECT * FROM articles ORDER BY id DESC LIMIT 3") != false){
    while ($row = mysqli_fetch_array($result)) {
        $articles[] = $row;
    }
}

echo $articles[0]['name'];
echo $articles[1]['name'];
echo $articles[2]['name'];

当您尝试按 id 排序时,这当然是最新添加到表中的,实际上应该按照添加文章的日期进行排序。但是它仍然可以按您的意愿工作,所以没问题。

但真正的优化在于您对数据库的 3 个单独查询,因为在我的示例中它只有 1 个。

【讨论】:

  • 天啊,非常感谢。它实际上像我想要的那样工作:) 我从来没有想过这个数组的技巧。谢谢你:)
  • 能否请您告诉我为什么它不适用于 $articles 之后的 []。我假设这是一个多维数组(由 mysqli 查询制成的数组被放入称为文章的数组中)对吗?但是在定义数组时,我在数组的语法中找不到任何带有“[]”的东西。应用是,但从不定义。我希望你明白我在问什么:) 谢谢
  • 为没有键 [] 的数组分配值使用数组的下一个可用数字索引。使用print_r($arr)var_dump($arr) 调试阵列
【解决方案2】:

试试这样的:(未经测试)

 $sql = mysqli_query($connect, "SELECT * FROM articles ORDER BY id DESC LIMIT 10");
 while ($row = mysqli_fetch_array($sql)) 
 {
     echo '<a href="#">'.htmlspecialchars($row['name']).'</a>';
 }

【讨论】:

  • 您好,感谢您的回答。但这不只是显示 10 篇最新文章的列表吗?我需要将每个名称放在网站的不同部分。如果我错了,请纠正我。
  • 如果标签紧随其后,您可以在循环中使用计数器,看看它是否是第一篇文章(然后让它变大)。您也可以将结果推送到一个数组,然后您可以检查该数组包含多少个元素,并对每个元素做任何您想做的事情。如果您需要另一个示例,请告诉我。
最近更新 更多