结合两个mysql结果

时间:2014-04-05 12:36:15

标签: php mysql html-table

这就是情况..

while($row = mysql_fetch_assoc($sql)){

$name = $row['name'];
$class = $row['class'];
$result = $row['phone'];

$data .= '<td>'.$name.'</td><td>'.$class.'</td><td>'.$result.'</td>';
}



echo "<table><tr>'.$data.'</tr><table>"

$name$class会出现一次,但$result会出现一次以上。我想在一个html行中一起显示它们。就像这个

Kevin | IX | 5343634,3565656
Melvin | X | 54534,3778,54434

2 个答案:

答案 0 :(得分:0)

一种可能的方法:首先在关联数组中收集结果,由name *索引,因为它们似乎是唯一的),然后根据这些结果做任何你想做的事情。例如:

$results = array();
while ($row = mysql_fetch_assoc($sql)) {
  $name = $row['name'];
  $results[$name]['class'] = $row['class'];
  $results[$name]['phone'][] = $row['phone'];
}

echo '<table>';
foreach ($results as $name => $result) {
  echo '<tr><td>' . $name . '</td><td>' . $result['class'] 
          . '</td><td>' . implode(',', $result['phone']) . '</td></tr>';
}
echo '</table>';

另一种方法:让您的查询使用GROUP BY和CONCAT_WS

汇总手机本身
  SELECT name, class, CONCAT_WS(',', phone) AS phones
    FROM students
GROUP BY name 

然后,您将以逗号分隔格式为您提供给定名称的所有电话。


作为旁注,请考虑切换到mysqlipdo个扩展名 - 而不是mysql。这是PHP documentation对此所说的内容:

  

自PHP 5.5.0起,此扩展程序已弃用,不建议使用   用于编写新代码将来会删除。代替,   应使用mysqliPDO_MySQL扩展程序。

这并不像听起来那么简单,但对于准备好的陈述来说,这绝对是值得的。

答案 1 :(得分:0)

以下将显示一个TD值为逗号分隔的TD。

$result = array();

while($row = mysql_fetch_assoc($sql)){

array_push($result, $row['id']);
}



echo "<table><tr><td>". implode(',',$result) ."</td></tr><table>"