我只是打印从mysql
获取的数据中的值$sql = "SELECT * FROM tablename";
$res = mysql_query($sql);
$rs = getAll($res);
for($k = 0; $k < count($rs); $k++)
{
$email = $rs[$k]['emailid'];
$name = $rs[$k]['name'];
$content = "<table><tr><td>Name</td><td>Email</td></tr><tr> <td>'.$name.'</td><td>'.$email.'</td></tr></table>";
}
现在$content
看起来像这样。
--------------
Name Email
--------------
n1 email1
--------------
Name Email
--------------
n2 email2
--------------
Name Email
--------------
n3 email1
现在我想根据常见电子邮件ID 合并html表格行。所以它应该看起来像
--------------
Name Email
--------------
n1 email1
n3 email1
--------------
Name Email
--------------
n2 email2
名称 n1 和 n3 基于'email1'合并。我如何实现这一目标?
答案 0 :(得分:2)
选项1)您可以通过电子邮件订购,然后使用php填充某些数组来循环结果,验证电子邮件是否从prev更改,等等Rajdeb在其他答案中解释:
SELECT * FROM tablename ORDER BY EMAIL;
你得到:
n1 email1
n2 email2
n3 email1
选项2)您可以使用GROUP_CONCAT来检索通过电子邮件粘贴的名称。然后在php循环中,对于每个不同的电子邮件,您将用逗号分隔名称。这里执行的唯一任务是一个数组爆炸,以获取数组中的名称并放入表格单元格,每个电子邮件只循环一次,php工作量较少。通过电子邮件订购是可选的。
SELECT GROUP_CONCAT(NAME) AS NAME, EMAIL
FROM tablename GROUP BY EMAIL ORDER BY EMAIL;
你得到:
n1,n3 email1
n2 email2
如果要将逗号符号更改为单独的名称,请使用&#34; - &#34;例如,您需要将SEPARATOR添加到以前的查询:
SELECT GROUP_CONCAT(NAME SEPARATOR '-') AS NAME, EMAIL
FROM tablename GROUP BY EMAIL ORDER BY EMAIL;
你得到:
n1-n3 email1
n2 email2
希望这对你有所帮助! :)
答案 1 :(得分:1)
首先,在ORDER BY
查询中添加SELECT
子句,如下所示:
$sql = "SELECT * FROM tablename ORDER BY emailid";
使用$rs = getAll($res);
进程获取结果集之后,就像这样:
// your code
$rs = getAll($res);
$prevEmail = '';
$content = '<table>';
for($k=0; $k < count($rs); $k++){
$email = $rs[$k]['emailid'];
$name = $rs[$k]['name'];
if(empty($prevEmail)){
$content .= '<tr><td>Name</td><td>Email</td></tr><tr><td>'.$name.'</td><td>'.$email.'</td></tr>';
$prevEmail = $email;
}else{
if($prevEmail == $email){
$content .= '<tr><td>'.$name.'</td><td>'.$email.'</td></tr>';
}else{
$content .= '</table><table><tr><td>Name</td><td>Email</td></tr><tr><td>'.$name.'</td><td>'.$email.'</td></tr>';
$prevEmail = $email;
}
}
}
$content .= '</table>';
echo $content;
旁注:不要使用mysql_*
函数,从PHP 5.5开始不推荐使用它们,并且在PHP 7.0中完全删除它们。请改用mysqli
或pdo
。 And this is why you shouldn't use mysql_*
functions。