【发布时间】:2018-11-20 03:04:26
【问题描述】:
我对编码和尝试学习 PHP 和 MYSQL 非常陌生。我正在尝试做的是,将相同的 CustomerID 查询分组到同一个表中,同时进行回显。目前,我的代码回显了所有单独的查询。我有一张像
ID CustomerID DATE Company
1 1 2018-11-19 A
2 1 2018-11-19 A
3 2 2018-11-19 B
4 3 2018-11-19 C
5 4 2018-11-19 D
6 4 2018-11-19 D
我的代码
$query = "SELECT `customers`.ID, `customers`.customerid, `customers`.date
FROM `customers` WHERE month(DATE)= month(CURRENT_DATE()) AND YEAR(DATE) = YEAR(CURRENT_DATE());
$result = $mysqli->query($query);
while($resultquery = $result->fetch_array())
{
$queryresult[] = $resultquery;
}
if (!empty($queryresult)) {
foreach($queryresult as $queryresults)
{
$id = $queryresults['id'];
$customerid = $queryresults['customerid'];
$date = $queryresults['date'];
?>
然后我回显它,结果是
Company Name: A
ID CustomerID DATE
1 1 2018-11-19
Company Name: A
ID CustomerID DATE
2 1 2018-11-19
Company Name: B
ID CustomerID DATE
3 2 2018-11-19
Company Name: C
ID CustomerID DATE
4 3 2018-11-19
<?php }} ?>
等等。
但我想要的是比较 customerID,如果有多个具有相同 id 的,则将它们作为一个组在表中回显。
Company Name: A
ID CustomerID DATE
1 1 2018-11-19
2 1 2018-11-19
Company Name: B
ID CustomerID DATE
3 2 2018-11-19
Company Name: C
ID CustomerID DATE
4 3 2018-11-19
我使用 GROUP_CONCAT 进行了一个 sql 查询,并使用 SEPARATOR '|') 对结果进行分组,它可以工作,但我认为它不是实现这一目标的最佳方法,所以请帮忙。谢谢
【问题讨论】:
-
您的查询包含语法错误;缺少的结束语。这只是一个糟糕的粘贴吗?
-
您可以将结果存储在基于
customerid的数组中,即$queryresult[$resultquery['customerid'][] = $resultquery;。然后你可以循环这些来创建你的组 -
@FunkFortyNiner 是的。我的文件中有结束语。
-
@Sean 你能用解释重写我的代码吗?我不知道如何准确循环并从中获取数据。谢谢
-
我没有看到你的任何代码超过
foreach($queryresult as $queryresults) {,所以我不知道如何重新编写代码。我看不出Company Name: A来自哪里