2

こんにちは、ID と電子メールを含むユーザー情報を含む 10 行があります。1 人のユーザーに複数の行があります。行データを含むすべてのユーザーにメールを 1 通のメールで送信したい

仮定する

id  email           item    balance
1   1@example.com   car 200
2   2@example.com   bike    400
3   3@example.com   iron    100
1   1@example.com   cd  500
3   3@example.com   dvd 200
1   1@example.com   books   300

現在、以下のスクリプトを使用して、すべての行に複数の電子メールを異なるユーザーに送信しています。これは、単一のユーザーのすべての行に対して個別のメールを送信するスクリプトです。

ID が 1@example.com である user1 が、彼に関連するすべての行データを含む単一のメールのみを受信するようにします。

<?php
$con=mysqli_connect("localhost","root","xx","card");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result2 = mysqli_query($con,"SELECT * FROM mailtest");
while($row = mysqli_fetch_array($result2))
{
$to = $row['email'];
$subject = "subject";
$emailBody="";
$emailBody .= "ID: ".$row['id']."; Item: ".$row['item']."; Balance:      ".$row['balance']."; Email: ".$row['email']." \n";

$headers = 'From: Work Pass Notification System <no-reply@someemailaddress>' . "\r\n" .
    'Reply-To: someemailaddress' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

      if(mail($to, $subject, $emailBody, $headers)) {
          echo $emailBody;
          echo 'Email sent successfully!';
      } else {
          echo $emailBody;
          die('Failure: Email was not sent!');
      }

}

mysqli_close($con);
?>
4

3 に答える 3

0

2 つのネストされたクエリを実行できます (疑似コード)

"SELECT DISTINCT email FROM items;"
foreach $email do:
    "SELECT item FROM items WHERE email = $email;"
    clear($all_items)
    foreach $item do:
        $all_items[] = $item
    mail(... $all_items ...)

GROUP_CONCAT単一のフィールドですべてのアイテムを取得する別の使用方法として:

SELECT email, GROUP_CONCAT(item) all_items FROM items GROUP BY email

次に、all_itemsフィールドをメールに入力します。

于 2013-06-13T14:39:27.387 に答える
0

ユーザーのすべての情報を Array に入れてからループしてみませんか?

<?php

$con=mysqli_connect("localhost","root","xx","card");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result2 = mysqli_query($con,"SELECT * FROM mailtest");

while($row = mysqli_fetch_array($result2)){

    $send_details[$row['email']] .= "ID: ".$row['Stu_id']."; Pin No: ".$row['Pin_number']."; name:      ".$row['name']."; Email: ".$row['email']." \n";

}

foreach($send_details as $email => $body){
   // Send the mail
}
于 2013-06-13T14:33:18.963 に答える