2016-06-15 7 views
0

私はphpメーラーを使用してデータベースデータをメールとして送信しようとしています。電子メールは正しく送信されていますが、メッセージにはデータベースの最後のデータだけが表示されます。データベース内のすべてのデータを送信するにはどうすればよいですか。phpメーラーを使用してデータベースデータを電子メールとして送信する方法は?

は、私は次のコードを試してみました:クエリ結果の行ごとに

<?php 
    require 'PHPMailer/PHPMailerAutoload.php'; 
function Selectdata($table,$condition) 
{ 
    global $conn,$result,$selectarray,$rowcount; 
    $sql="SELECT * from ".$table." ".$condition." "; 
    $result=$conn->query($sql); 
    $rowcount=$result->num_rows; 
    $selectarray = array(); 
    while($row=$result->fetch_assoc()) 
    { 
     $selectarray[]=$row; 
    } 
    return $result; 
} 

// function for join 
function outerjoin($query) 
{ 
    global $conn,$result,$selectoutter,$rowcount; 
    $sql="".$query.""; 
    $result=$conn->query($sql); 
    $rowcount=$result->num_rows; 
    $selectoutter = array(); 
    while($row=$result->fetch_assoc()) 
    { 
     $selectoutter[]=$row; 
    } 
} 

    $mail = new PHPMailer; 
    $mail->isSMTP();          
    $mail->Host = 'smtp.gmail.com'; 
    $mail->SMTPAuth = true;        
    $mail->Username = '[email protected]';    
    $mail->Password = 'xxxxxxxxxxxxx';       
    $mail->SMTPSecure = 'tls';        
    $mail->Port = 587;          
    $mail->SMTPDebug = 1;         
    $mail->setFrom('[email protected]', 'Arun'); 
    $mail->addAddress('[email protected]', 'kumaresh');  

    $mail->IsHTML (true); 
    $mail->Subject = 'Messages From Forum'; 
    $table="mdl_course"; 
    $condition=""; 
    $selectcourse=Selectdata($condition,$table); 

    foreach ($selectarray as $cid) { 

     $query="SELECT a.name as forumname,b.name as discussion,c.message,c.userid,d.firstname,d.email,d.phone1 from mdl_forum as a inner join mdl_forum_discussions b on a.id=b.forum inner join mdl_forum_posts c on b.id=c.discussion inner join mdl_user d on c.userid=d.id where a.course=".$cid['id']." and a.category=1 and from_unixtime(c.modified,'%Y-%m-%d')=CURDATE()"; 
     $selectmsg=outerjoin($query); 

     foreach ($selectoutter as $fmsg) { 
      $mail->Body = '<p><b>Forum Name:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['forumname'].'</p>'; 
      $mail->Body.= '<p><b>Discussion Name:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['discussion'].'</p>';  
      $mail->Body.= '<p><b>Message:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['message'].'</p>'; 
     } 
    } 

    $send = $mail->Send(); 
    if (!$send) { 
     echo 'Message could not be sent.'; 
    // echo 'Mailer Error: ' . $mail->ErrorInfo; 
    } else { 
     echo 'Message has been sent'; 
    } 
?> 
+0

'$ selectarray'はどこから来ますか?私はその変数への参照を見ることができません。 –

答えて

1

を、あなたは、メールの本文を切り捨てている:

$mail->Body= '<p><b>Forum [...] 

ループの前に$mail->Bodyを設定し、次にdd行情報.=

+0

ありがとうございます:-) –

1

更新foreachループ

$body = '';  
foreach($selectarray as $cid) 
{ 
    $query = "SELECT a.name as forumname,b.name as discussion,c.message,c.userid,d.firstname,d.email,d.phone1 from mdl_forum as a inner join mdl_forum_discussions b on a.id=b.forum inner join mdl_forum_posts c on b.id=c.discussion inner join mdl_user d on c.userid=d.id where a.course=".$cid['id']." and a.category=1 and from_unixtime(c.modified,'%Y-%m-%d')=CURDATE()"; 
    $selectmsg = outerjoin($query); 
    foreach($selectoutter as $fmsg) 
    { 
     $body .= '<p><b>Forum Name:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['forumname'].'</p>'; 
     $body .= '<p><b>Discussion Name:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['discussion'].'</p>'; 
     $body .= '<p><b>Message:</b>&nbsp;&nbsp;&nbsp;'.$fmsg['message'].'</p>';  
    } 

} 

$mail->Body = $body; 
関連する問題