Php MySQL基于2列顺序拆分结果

Php MySQL基于2列顺序拆分结果,php,mysql,Php,Mysql,我将根据一列中的匹配值显示来自MySQL表的结果。然后,当数据不同时,我需要根据另一列中的数据来分离这些结果 下面是我从中提取数据的表格的简化示例: customer_id customer_timestamp customer_order customer_email 27 2019-02-23 02:52:41 ABC123456789 admin@admin.com 28 2019-02-23 02:52:41 ABC123456789 adm

我将根据一列中的匹配值显示来自MySQL表的结果。然后,当数据不同时,我需要根据另一列中的数据来分离这些结果

下面是我从中提取数据的表格的简化示例:

customer_id customer_timestamp  customer_order customer_email
         27 2019-02-23 02:52:41 ABC123456789   admin@admin.com
         28 2019-02-23 02:52:41 ABC123456789   admin@admin.com
         32 2019-02-26 05:51:41 CBA987654321   admin@admin.com
根据上面的内容,我需要返回包含相同客户电子邮件的所有行,然后按客户订单号将它们分开。 这可以通过select语句单独实现吗?如果可以,如何实现

下面是我正在使用的select语句的一个示例,它返回具有相同电子邮件的所有行

$select = "select * from mytable where customer_email='admin@admin.com'";

我从查询中获取的数据是在一个数组中获取的,因此我需要该数组根据customer_order列生成一个新的循环。

我想出来了,可能看起来有点粗糙,但它可以工作。我回顾了最初显示任何订单数据的想法,现在需要用户交互来选择一个分组的订单号来显示特定订单的详细信息

代码如下

// Retrieve order number/s
$select_order = "select * from mytable where customer_email='admin@admin.com' group by customer_order";
$connect_order = mysqli_query($con, $select_order);
while ($row_order=mysqli_fetch_array($connect_order)) {
$customer_order = $row_order['customer_order'];
echo "
<form method='post'>
<input type='submit' value='$customer_order' name='order_current[]'>
</form>
";
}

// Make each grouped order number a separate query
if (isset($_POST['order_current'])) {
$order_all = $_POST['order_current'];
foreach ($order_all as $order_post) {

// Retrieve selected order details
$select_order = "select * from mytable where customer_email='admin@admin.coml' and customer_order='$order_post'";
$connect_order = mysqli_query($con, $select_order);
while ($row_order=mysqli_fetch_array($connect_order)) {
$name = $row_order['customer_name'];
$amount = $row_order['customer_amount'];

// Display selected order details
echo "
$name<br/>
$amount<br/>
";
}
}
}
//检索订单号/s
$select_order=“select*from mytable where customer\u email=”admin@admin.com“按客户订单分组”;
$connect\u order=mysqli\u query($con,$select\u order);
while($row\u order=mysqli\u fetch\u array($connect\u order)){
$customer\u order=$row\u order['customer\u order'];
回声“
";
}
//将每个分组的订单号作为单独的查询
如果(isset($_POST['order_current'])){
$order\u all=$\u POST['order\u current'];
foreach($order\U all as$order\U post){
//检索所选订单详细信息
$select_order=“select*from mytable where customer\u email=”admin@admin.coml'和客户订单='$order\u post';
$connect\u order=mysqli\u query($con,$select\u order);
while($row\u order=mysqli\u fetch\u array($connect\u order)){
$name=$row_order['customer_name'];
$amount=$row_order['customer_amount'];
//显示所选订单详细信息
回声“
$name
$amount
"; } } }
其中customer\u email=:email和customer\u brownie\u count=47
此外,您应该在此处使用准备好的语句,而不是直接在查询中插入输入。看看PDO(比mysqli_*imo更好,但要避免mysql_*imo)你说的分开是什么意思?结果应该是什么样的也许在查询中添加
order by customer\u order\u number
就足够了?@cypherabe我正在使用数组获取查询结果,因此当customer\u order不同时,我需要生成另一个循环。一次查询执行无法获得多个结果集。您或者需要分别查询customer_电子邮件和customer_订单的每个组合(正如Rogue建议的那样),或者需要在处理结果的脚本中分别处理这些组合。。。。第三种选择:阅读SQL中的
groupby
和聚合函数,例如,如果您只需要一份订单的总价格