'Grouping' PHP 结果来自 MySQL 查询
'Grouping' PHP results from an MySQL query
我很难做到这一点,所以我想问一下..
我有一个 table,其中包含一些字段名称。 table 中的每个字段条目都按照规范具有类型、名称和 ID。
我希望能够将我的 SQL 结果分组,以便我可以 'print' 将每种类型(以及该类型的关联成员)放入 table。我尝试了以下方法:
$query = "SELECT id,type,opt_name FROM fields ORDER BY type";
$resource = $pdo->query($query);
$results = array();
while ( $row = $resource->fetch() ) {
$type[$row['type']] = $row['opt_name'];
$o_id = clean($row['id'], 'text');
$o_name = clean($row['opt_name'], 'text');
}
foreach ($type AS $o_type => $o_name) {
echo $o_type;
echo "<br>";
foreach (($type) AS $opt_name) {
echo $opt_name;
echo "<br>";
}
}
请不要太担心 HTML 输出,这只是为了显示上下文。
代码执行时,只会打印一行。结果,我 'print_r' 测试了两个:
$type[$row['type']] = $row['opt_name'];
确实只显示数组中的一行。创建:
$results = $row;
显示所有数据,但太多了,而且不符合我认为可以与 'foreach' 一起使用的方式。
我可能在这里犯了一个菜鸟错误,但看不到它。
求助!
您将覆盖 $type['type'] 的值,而不是使用以下方法将更多值推入其中:
$type[$row['type']] = $row['opt_name'];
你很可能想要
$type[$row['type']][] = $row['opt_name'];
然后您需要修复循环,以便循环遍历选项,而不是类型。
foreach ($type AS $o_type => $options) {
echo $o_type;
echo "<br>";
foreach ($options AS $opt_name) {
echo $opt_name;
echo "<br>";
}
}
我很难做到这一点,所以我想问一下..
我有一个 table,其中包含一些字段名称。 table 中的每个字段条目都按照规范具有类型、名称和 ID。
我希望能够将我的 SQL 结果分组,以便我可以 'print' 将每种类型(以及该类型的关联成员)放入 table。我尝试了以下方法:
$query = "SELECT id,type,opt_name FROM fields ORDER BY type";
$resource = $pdo->query($query);
$results = array();
while ( $row = $resource->fetch() ) {
$type[$row['type']] = $row['opt_name'];
$o_id = clean($row['id'], 'text');
$o_name = clean($row['opt_name'], 'text');
}
foreach ($type AS $o_type => $o_name) {
echo $o_type;
echo "<br>";
foreach (($type) AS $opt_name) {
echo $opt_name;
echo "<br>";
}
}
请不要太担心 HTML 输出,这只是为了显示上下文。
代码执行时,只会打印一行。结果,我 'print_r' 测试了两个:
$type[$row['type']] = $row['opt_name'];
确实只显示数组中的一行。创建:
$results = $row;
显示所有数据,但太多了,而且不符合我认为可以与 'foreach' 一起使用的方式。
我可能在这里犯了一个菜鸟错误,但看不到它。
求助!
您将覆盖 $type['type'] 的值,而不是使用以下方法将更多值推入其中:
$type[$row['type']] = $row['opt_name'];
你很可能想要
$type[$row['type']][] = $row['opt_name'];
然后您需要修复循环,以便循环遍历选项,而不是类型。
foreach ($type AS $o_type => $options) {
echo $o_type;
echo "<br>";
foreach ($options AS $opt_name) {
echo $opt_name;
echo "<br>";
}
}