我有一个表,需要在其中获取所有数据,但需要在下拉列表中显示"type"列。现在在我的桌子上有2个绿色,1个红色和3个白色。
id type_id type info1 info2
1 1 green some important data some important data
2 1 green some important data some important data
3 2 red some important data some important data
4 3 white some important data some important data
5 3 white some important data some important data
6 3 white some important data some important data
我想在php上这样显示(如果代码不完整,不要担心,我得到了:D),
<select>
<?php
foreach($result as $r):
echo '<option>'. $r['type'] . '</option>';
endforeach;
?>
</select>
这个问题是它显示列(type)中的所有数据,我需要每个type_id显示1。我不能使用GROUP BY,因为它不会显示我在该类型下需要的信息。我怎样才能做到这一点?谢谢
在您的案例中获取类型列表的正确方法:
SELECT DISTINCT type FROM table;
阅读更多关于MySQL SELECT的信息。
如果您不想运行第二个查询:
<select>
<?php
$type=array();
foreach($result as $r):
$type[$r['type']] = '<option>'. $r['type'] . '</option>';
endforeach;
echo implode("", $type);
?>
</select>
如果可以运行第二个查询,请阅读Alex Belyaev的回答。
首先需要使用select查询从表中检索所有数据。在处理查询结果集时,您需要将类型字段的所有值存储到一个数组中,并将array_unique函数应用于包含类型值的数组,使用foreach循环生成的唯一数组,您可以用不同的类型值填充下拉列表。此解决方案将消除第二次查询的使用,并且您将能够访问存储在表中的所有必需数据。