这就是情况..
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
答案 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
然后,您将以逗号分隔格式为您提供给定名称的所有电话。
作为旁注,请考虑切换到mysqli
或pdo
个扩展名 - 而不是mysql
。这是PHP documentation对此所说的内容:
自PHP 5.5.0起,此扩展程序已弃用,不建议使用 用于编写新代码将来会删除。代替, 应使用
mysqli
或PDO_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>"