gpt4 book ai didi

php - SQL 查询 PHP - 博客

转载 作者:行者123 更新时间:2023-11-29 06:20:06 24 4
gpt4 key购买 nike

我确信网络上的某个地方已经有人问过这个问题,但我还没有找到,因为我不知道我应该搜索什么。所以我将尝试描述问题:

我有一个用 PHP 编写的博客和一个 SQL 数据库,我从中接收所需的数据。

每个博客条目包含 1 个图像和 1 个文本字段,并有自己的 ID。为了获取这些数据,我执行了这个查询(伪代码)-> 这工作正常:

foreach($db->query("SELECT news.id, news.position, news_text.date, news_text.text, news_images.image
FROM news
LEFT OUTER JOIN news_text ON news.id=news_text.id
LEFT OUTER JOIN news_images ON news_images.id = news.id
ORDER BY position") as $row){
echo "{$row['id']}";
echo "{$row['position']}";
echo "{$row['date']}";
echo "{$row['text']}";
echo "{$row['image']}";
}

现在问题开始了。我想添加一个评论字段,用户可以在其中添加消息。因此,对于每个博客条目,可以有多个评论(可能是 1:n 连接)。- 我试图在 foreach 循环中添加一个 foreach 循环(愚蠢)- 我尝试了几个 SQL 查询,但结果只得到了垃圾- 我看不到如何将数据库 news_comment 与其他数据库连接的逻辑

这是我的简化数据库:

enter image description here

谁能告诉我如何解决这个问题。结果应该是:

foreach($db->query("SELECT news.id, news.position, news_text.date, news_text.text, news_images.image
FROM news
LEFT OUTER JOIN news_text ON news.id=news_text.id
LEFT OUTER JOIN news_images ON news_images.id = news.id
ORDER BY position") as $row){
echo "{$row['id']}";
echo "{$row['position']}";
echo "{$row['date']}";
echo "{$row['text']}";
echo "{$row['image']}";
Here i get for each blog-entry the corresponding comments..
}

谢谢。米施

最佳答案

您应该使用与检索新闻相同的条件在另一个查询(而非循环)中检索评论。因此,在执行完这两个查询后,您将不得不排列:新闻和评论。

然后你只需要对每个新闻条目进行适当的评论。
为此,您可能需要重建评论数组,以便评论 news_id 成为存储评论的数组的索引。

最后看起来像这样:

$news = [
[
'id' => ...,
'position' => ...
<so on>
]
];

$comments = [
$news[0]['id'] = [<comment array>],
<so on>
];

这是大多数框架用来在结果集中绑定(bind)数据的方式。

关于php - SQL 查询 PHP - 博客,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com