【发布时间】:2012-04-01 13:47:41
【问题描述】:
所以我正在制作“产品列表”,其想法是拥有产品名称,然后是从数据库中派生的颜色下拉列表。问题是我只能获得“颜色”while循环来迭代一次,我获得第一个产品名称和下拉菜单中的颜色一次但不是随后,我想要的帮助是,我该如何改变这段代码让它做我需要的,我已经尝试了一个星期,我真的可以使用一些帮助。
$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 查询是不可预测的。相反,您可以执行 while 循环,一次将查询转换为数组,然后执行嵌套的 foreach 循环。
-
你能做到
var_dump(mysql_fetch_assoc($color_query))并用输出更新你的问题吗? -
@kingcoyote 为什么会不可预测?他在两个不同的表上有两个不同的查询,而且他在 while 循环之前执行他的查询。
-
@steveoh 这是一段模糊的记忆,但我记得指针相互混淆,其中嵌套的 mysql_fetch_assoc 与外部的冲突。所以不是去 1A、1B、1C、2A、2B、2C,而是去 1A、2B、3C 或类似的东西。
-
颜色是否因产品而异?如果是这样,将
products连接到product_colours可能会更有效(取决于许多因素,例如数据库链接延迟、每个结果集中的行数......)
标签: php mysql while-loop