gpt4 book ai didi

php - 将嵌套 Mysqli 查询更改为 JOIN 语句

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

我们更新了以下旧版 PHP,我想将嵌套循环转换为 JOIN由于嵌套查询不输出内容的问题,请改为使用查询。

输出<optgroup>很重要每个类别组的元素(在数据库中由 parentCategory_id=0 描述),带有嵌套 <option>每个类别的标签。请参阅下面所需的 HTML 输出。

如有任何建议,我们将不胜感激。非常感谢!

PHP

<select name="category">
<option value="">All categories</option>

<?php
// Get category groups
$q = $db->query("SELECT * FROM categories WHERE parentCategory_id=0 ORDER BY category_id");
while ($parent = $q->fetch_assoc()) {
?>

<optgroup label='<?=$parent["cat_name"];?>'>

<?php
// Find all child categories
$catQ = $db->query("SELECT * FROM categories WHERE parentCategory_id=$parent[category_id]");
while ($category = $catQ->fetch_assoc($catQ)) {
?>

<option value='<?=$category["category_id"];?>' $selected><?=$category["cat_name"];?></option>

<?php } ?>

</optgroup>

<?php }
$q->close();
?>
</select>

HTML

<select name="category">
<option value="">All categories</option>

<optgroup label="Clothing">
<option value="1">Mens</option>
<option value="2">Womens</option>
</optgroup>

<optgroup label="Jewellery">
<option value="3">Gold</option>
<option value="4">Silver</option>
</optgroup>

</select>

最佳答案

我知道这是遗留代码,但这里的问题是逻辑

只需查看您自己的查询即可。

SELECT * FROM categories WHERE parentCategory_id=0 ORDER BY category_id
SELECT * FROM categories WHERE parentCategory_id=$parent[category_id]

都是同一个表,为什么查询同一个表?

您希望如何进行 JOIN ?就其本身而言?

<小时/>

JOIN 至少适用于 2 个表,您需要做的是在 PHP 中重组数据:

$categories = array();
while ($cat = $q->fetch_assoc()){
$categories[$cat['cat_name']][$cat['category_id']] = $cat['cat_type'];
}

然后构建您的选择:

<select name="category">
<option value="">All categories</option>
<?php foreach($categories as $label => $opt): ?>
<optgroup label="<?php echo $label; ?>">
<?php foreach ($opt as $id => $name): ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>

关于php - 将嵌套 Mysqli 查询更改为 JOIN 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26471622/

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