php - 如何过滤while循环中的项目?
问题描述
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 的电子邮件,而不是向同一个收件人发送三封电子邮件。有没有办法实现它?
解决方案
我将通过使用聚合查询在 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);
}
推荐阅读
- django - 如何避免在 django 模板 forloop 中显示重复的日期时间数据?
- python - 在 O(k*N + k*Q) 中计算 K-mer 的有效方法?
- python - 变长参数函数
- javascript - 结合 withLatestFrom 向 Observable 添加延迟“防止”订阅
- javascript - 如何修复显示空白的博客顶部菜单栏?
- php - 我需要有关使用 PHP 从一周数中获取天数列表的帮助
- mysql - 为什么使用 `HAVING` 而不是 `WHERE` 不会给出相同的结果?
- rstudio - 在 html kitted R markdown Presentation 中嵌入字体
- android - 如何检查我的小部件屏幕何时像 Android 中的 onResume 一样在颤动中可见
- php - 如何计算用户在一个月 laravel 中添加的帖子?