gpt4 book ai didi

php - 在查询循环内查询,同时需要两个查询输出

转载 作者:行者123 更新时间:2023-11-30 22:37:12 25 4
gpt4 key购买 nike

在我的网站上,我想制作一个类似this 的导航栏。 ,包含类别(此处为 2012 年)和文章(此处为 5 月至 10 月)。我有一个包含所有类别(infocat_id、名称)的 MySQL 数据库和一个包含所有文章(标题、正文、类别、infopost_id)的数据库。

我想我可以按如下方式编写我的 php:

<ul>
<?php
$query1 = $db->prepare("SELECT infocat_id, name FROM info_category");
$query1->execute();
$query1->bind_result($infocat_id, $name);
while($query1->fetch()):
?>
<li>
<?php echo $name; ?>
<ul>
<?php
$query2 = $db->prepare("SELECT title, infopost_id FROM info_posts WHERE category = $infocat_id");
$query2->execute();
$query2->bind_result($title, $infopost_id);
while($query2->fetch()):
?>
<li><?php echo $title; ?></li>
<?php endwhile; ?>
</ul>
</li>
<?php endwhile; ?>
</ul>

遗憾的是,这行不通,因为我只得到了第一个类别名称,并且在“ fatal error :调用 [php 文件所在目录中的非对象上的成员函数 execute()” ] 行 [表示 $query2->execute(); 的行]。

我想我不能使用 JOIN,因为我还需要第一个查询的输出。

我对 PHP 不是很有经验,所以如果有人能帮助我,我将不胜感激。

最佳答案

可以使用join,只检查key有没有变化来决定是否再次输出title。

粗略地敲打并且没有测试但是是这样的:-

<ul>
<?php
$prev_infocat_id = 0;
$query1 = $db->prepare("SELECT infocat_id, name, title, infopost_id
FROM info_category
LEFT OUTER JOIN info_posts
ON info_category.infocat_id = info_posts.category");
$query1->execute();
$query1->bind_result($infocat_id, $name, $title, $infopost_id);
while($query1->fetch())
{
if ($prev_infocat_id == 0)
{
echo '<li>';
}
else
{
if ($prev_infocat_id != $infocat_id)
{
echo '</li><li>';
}
}
$prev_infocat_id = $infocat_id;
echo '<li>'.$title.'</li>';
}
if ($prev_infocat_id != 0)
{
echo '</li>';
}
?>
</ul>

关于php - 在查询循环内查询,同时需要两个查询输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204568/

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