所以我正在做一个“产品列表”,我的想法是先有产品的名称,然后有一个从数据库中得到的颜色下拉列表。问题是我只能得到“颜色”而循环迭代一次,我得到第一个产品名和下拉菜单中的颜色一次,但不是随后,我想要的帮助是,我如何改变这个代码,使它做我需要的,我已经尝试了一个星期,我真的可以使用一些帮助。

    $product_query = mysql_query('SELECT * FROM products WHERE id > 0');
$colour_query = mysql_query('SELECT * FROM product_colours WHERE id > 0');


while ($get_product_rows = mysql_fetch_assoc($product_query)){
echo $get_product_rows['name'];
    echo "<br \>";

    if ($get_product_rows['has_colour'] == '1'){
        while ($get_colour_row = mysql_fetch_assoc($colour_query)){
            // Drop down box population goes here.


        }
    }
}

如果有人能帮忙,我将不胜感激。
从格兰特M。

最佳答案

mysql_fetch_assoc()的工作方式是它有一个内部指针,每次运行该方法时,都会得到下一个项,指针会移动一次。如果没有指针,while循环将如何终止?它会一次又一次地拉出颜色。
解决这个问题的方法是在每次迭代中重置点。这可以使用mysql_data_seek()来完成。

$product_query = mysql_query('SELECT * FROM products WHERE id > 0');
$colour_query = mysql_query('SELECT * FROM product_colours WHERE id > 0');

while ($get_product_rows = mysql_fetch_assoc($product_query)) {
    echo $get_product_rows['name'];
    echo "<br />";

    if ($get_product_rows['has_colour'] == '1') {
        while ($get_colour_row = mysql_fetch_assoc($colour_query)) {
            // Drop down box population goes here.
        }
    }
    mysql_data_seek($colour_query, 0);
}

10-05 20:28
查看更多