返回列等于ID多次的列表?

时间:2015-03-13 11:55:38

标签: php mysql

我正在尝试输出基于(prodCategory)的产品列表,请参阅下面的表结构:

这是我的类别表结构:

enter image description here

然后我的产品表结构:

enter image description here

如下图所示,我有输出类别和第一个与prodCategory相同的产品。

enter image description here

所以问题是如何返回与(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>

3 个答案:

答案 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++;
                }
            ?>