我想创建一个表来显示数据库中的数据列表。但是这些值不是存储在表中的行中,而是由具有自己列的每个值分隔。
所以我的样本数据
ID Email Value
1 david@a.com ABC
1 david@a.com DEF
1 david@a.com GHI
2 jonathan@a.com ABC
2 jonathan@a.com DEF
2 jonathan@a.com GHI
我想将其显示为:
ID Email Value1 Value2 Value3
1 david@a.com ABC DEF GHI
2 jonathan@a.com ABC DEF GHI
我的代码:
$query1 = "SELECT wp_users.ID, user_email, VALUE FROM wp_users LEFT JOIN wp_cimy_uef_data on wp_users.ID = wp_cimy_uef_data.USER_ID";
$listEmail = array();
$listValues = array();
// Start the Load
$statement = $db->query($query1);
if ( $statement->rowCount() == 0 )
{
echo '<strong>List is Empty</strong>';
} else foreach($statement as $row):
$ID = htmlspecialchars($row['ID']);
$email = htmlspecialchars($row['user_email']);
$value = htmlspecialchars($row['VALUE']);
$listEmail = array_fill_keys($ID, $email);
$listValues = array_fill_keys($ID, $value);
endforeach;
mysqli_close($db);
print_r($listEmail);
答案 0 :(得分:3)
SELECT wp_users.ID, wp_users.user_email,
GROUP_CONCAT(wp_users.value)
FROM wp_users LEFT JOIN wp_cimy_uef_data on wp_users.ID = wp_cimy_uef_data.USER_ID
GROUP BY wp_users.user_email
确实使用GROUP_CONCAT将值列和GROUP BY连接到user_email上的分组。
答案 1 :(得分:2)
您可以像这样构建循环:
$table_rows = array();
foreach($statement as $row) {
$ID = htmlspecialchars($row['ID']);
$email = htmlspecialchars($row['user_email']);
$value = htmlspecialchars($row['VALUE']);
if (empty($table_rows[$ID])) {
$table_rows[$ID] = array(
'email' => $email,
'values' => array(),
);
}
$table_rows[$ID]['values'][] = $value;
}
或者您可以在查询中使用分组。