>source

SQL 테이블 [주문]

| orderId | dueDate    | emailAddress   |
| -------| ----------| --------------|
| 1010101 | 10/11/2021 | [email protected]  |
| 1010102 | 10/11/2021 | [email protected]  |
| 1010103 | 10/11/2021 | [email protected]  |
| 1010104 | 10/11/2021 | [email protected] |
| 1010105 | 10/11/2021 | [email protected] |
| 1010106 | 10/11/2021 | [email protected] |

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);
}

나의 요구사항

이제 동일한 수신자에게 3개의 이메일을 보내는 대신 3개의 주문 ID를 나열하는 하나의 이메일만 보내고 싶습니다. 그것을 달성하는 방법이 있습니까? 누군가가 나를 도울 수 있다면 매우 도움이 될 것입니다!

감사합니다!

  • 답변 # 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);
    }
    

    정말 고맙습니다!

    Sakkir2021-11-10 03:36:26
  • 답변 # 2

    Why is there duplicate data in the table?
    <?php
    $query= "SELECT * FROM orders";
    $result= mysqli_query($conn, $query);
    $sentList= [];
    while ($row= mysqli_fetch_assoc($result)) {
        if (key_exists($row['emailAddress'], $sentList)) {
            continue;
        }
        $order= $row['orderId'];
        $to= $row['emailAddress'];
        $sub= "Payment Due Reminder";
        $body= "Due reminder message with order ID $order";
        mail($to, $sub, $body);
        $sentList[$to]= 1;
    }
    

    중복 데이터가 없습니다. 기본 키는 orderId입니다.

    Sakkir2021-11-10 03:26:41

    죄송합니다. 메일을 1개로 제한하면서 동일한 이메일 주소와 관련된 모든 주문 ID를 가져오고 싶습니다.

    Sakkir2021-11-10 03:34:00
  • 이전 qt : C++에서 채워진 시리즈로 ChartView 채우기
  • 다음 redis 서버를 시작할 때 AOF 재구축이 자동입니까?