Php 返回列多次等于ID的列表?
我正在尝试输出基于(prodCategory)的产品列表,请参见以下表格结构: 这是我的类别表结构: 然后我的产品表结构: 正如您在下图中所看到的,我已经得到了要输出的类别,以及与prodCategory相等的第一个产品 因此,问题是如何返回与(prodCategory)匹配的所有产品,我的代码如下:Php 返回列多次等于ID的列表?,php,mysql,Php,Mysql,我正在尝试输出基于(prodCategory)的产品列表,请参见以下表格结构: 这是我的类别表结构: 然后我的产品表结构: 正如您在下图中所看到的,我已经得到了要输出的类别,以及与prodCategory相等的第一个产品 因此,问题是如何返回与(prodCategory)匹配的所有产品,我的代码如下: <dl class="accordion"> <?php $query = "SELECT * FROM cate
<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>
显然你需要一个基本的知识,我猜你需要这个
Select a.prodID,a.prodName from product a JOIN category b
on a.prodCategory=b.catID where b.catState=1
我们可以使用连接,也可以使用mysql的旧方法:
select p.* from product p, category c where p.prodCategory = c.catID and c.catState= 1;
感谢您的建议和回答,我在没有使用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++;
}
?>
您需要了解
加入。您需要的查询是基本SQL语法。