我正在尝试输出基于(prodCategory)的产品列表,请参阅下面的表结构:
这是我的类别表结构:
然后我的产品表结构:
如下图所示,我有输出类别和第一个与prodCategory相同的产品。
所以问题是如何返回与(prodCategory)匹配的所有产品,我的代码如下:
<dl class="accordion">
<?php
$query = "SELECT * FROM category WHERE catState = 1";
$result = $conn->query($query);
$no=1;
while($row = $result->fetch_object()){
$catprod = $row->catID;
if ($no==200) {
echo '';
$no = 1;
}
?>
<dt><span><?php echo $row->catName; ?></span></dt>
<dd>
<?php
$queryprod = "SELECT * FROM products WHERE prodCategory = $catprod";
echo $queryprod;
$resultprod = $conn->query($queryprod);
$rowprod = $resultprod->fetch_object();
?>
<ul class="list">
<li><?php echo $rowprod->prodName; ?></li>
</ul>
</dd>
<?php
$no++;
}
?>
</dl>
答案 0 :(得分:0)
显然你需要一个关于JOINS的基本知识,猜猜你需要这个
Select a.prodID,a.prodName from product a JOIN category b
on a.prodCategory=b.catID where b.catState=1
答案 1 :(得分:0)
我们可以使用连接或者我们可以使用mysql的旧方法:
select p.* from product p, category c where p.prodCategory = c.catID and c.catState= 1;
答案 2 :(得分:0)
感谢您的建议和解答,我在不使用JOIN的情况下将代码修改为以下内容,但使用JOIN是一种很好的方式,在使用多个表格时我需要了解更多内容。
<?php
$query = "SELECT * FROM category WHERE catState = 1";
$result = $conn->query($query);
$no=1;
while($row = $result->fetch_object()){
$catprod = $row->catID;
if ($no==200) {
echo '';
$no = 1;
}
?>
<dt><span><?php echo $row->catName; ?><?php echo $catprod; ?></span></dt>
<dd>
<?php
$queryprod = "SELECT * FROM products WHERE prodCategory = $catprod";
$resultprod = $conn->query($queryprod);
while($rowprod = $resultprod->fetch_object()){
echo '<ul class="list">
<li>' . $rowprod->prodName . '</li>
</ul>';
}
$resultprod->free();
?>
</dd>
<?php
$no++;
}
?>