【问题标题】:How to filter items in while loop? [duplicate]如何过滤while循环中的项目? [复制]
【发布时间】:2021-12-22 17:08:28
【问题描述】:

SQL 表 [订单]

| orderId | dueDate    | emailAddress   |
| ------- | ---------- | -------------- |
| 1010101 | 10/11/2021 | joe@gmail.com  |
| 1010102 | 10/11/2021 | joe@gmail.com  |
| 1010103 | 10/11/2021 | joe@gmail.com  |
| 1010104 | 10/11/2021 | john@gmail.com |
| 1010105 | 10/11/2021 | john@gmail.com |
| 1010106 | 10/11/2021 | john@gmail.com |

PHP 脚本

$query = "SELECT * FROM orders";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
  $order = $row['orderId'];
  $to = $row['emailAddress'];
  $sub = "Payment Due Reminder";
  $body = "Due reminder message with order ID $order";
  mail($to, $sub, $body);
}

我的要求

现在我只想发送一封列出三个订单 ID 的电子邮件,而不是向同一个收件人发送三封电子邮件。有没有办法实现?

【问题讨论】:

    标签: php mysql while-loop


    【解决方案1】:

    我会在 MySQL 中使用聚合查询来处理这个问题:

    $query = "SELECT dueDate, emailAddress, GROUP_CONCAT(orderId) AS all_orders
    FROM orders
    GROUP BY dueDate, emailAddress";
    
    $result = mysqli_query($conn, $query);
    while ($row = mysqli_fetch_assoc($result)) {
        $all_orders = $row['all_orders'];
        $to = $row['emailAddress'];
        $sub = "Payment Due Reminder";
        $body = "Due reminder message with order ID $all_orders";
        mail($to, $sub, $body);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2015-05-30
      相关资源
      最近更新 更多