2009-03-25 8 views
0

私は、MySQLデータベースとPHPを使用しています。
私のMySQLデータベースには、次のレコードが含まれていますMySQLのレコードから自動メールを送信するにはどうすればよいですか?

Name Address Data email    Date 
    Joy Fortblair 10  [email protected] 1/22/2009 
    Bob Atlanta 15  [email protected] 2/22/2009 

私の意図は、以下の条件でPHPを使用して電子メールを送信することです:

  • データが1日古いです。 (Current date - date = 1 day

  • すべての電子メールレコードを一度にメールする必要があります。

どのような方法が最適ですか?一度だけ送信するよう

答えて

5

は、SQLクエリは非常に簡単です、それは

SELECT *, TIMESTAMPDIFF(day, Date, NOW()) FROM `your_table_name` WHERE TIMESTAMPDIFF(day, Date, NOW()) = 1; 

を以下のようになり今では結果の内容を取得し、文字列でそれらを配置する必要があり

<?php 
$sql = " SELECT *, TIMESTAMPDIFF(day, Date, NOW()) FROM `your_table_name` WHERE TIMESTAMPDIFF(day, Date, NOW()) = 1"; 
$query = mysql_query($query); 
$emailBody = ""; 
while($row = mysql_fetch_assoc($query)) 
{ 
    $emailBody .= "Name: ".$row['Name']."; Address: ".$row['Address']."; Data: ".$row['Data']."; Email: ".$row['email']." \n"; 
} 

mail("[email protected]", "Subject", $emailBody); 
?> 

お楽しみください!

+0

を実行した場合、cronjobを使わずにこのコードを実行することは可能でしょうか? – venkatachalam

+0

私は一度だけメールを送る必要があるので、一致するレコード – venkatachalam

+0

それは.phpファイルに入れて、crontabに追加したくない場合はいつでもブラウズして呼び出すことができます。 –

1
SELECT email FROM Table WHERE DATEDIFF(CURRENT_DATE(), Date) >= 1 

:あなたは、データベースに電子メールを送信したことを記憶または等価比較(=)で一日一回、スクリプトを呼び出すいずれかの代わりに、より大きな-または-等しいです(> = )

+0

このコードをcronジョブなしで実行することは可能ですか? – venkatachalam

+0

これは、スクリプトを呼び出すたびに実行し、今日このクエリを実行したどこかに(おそらくdb内に)格納することができます。 – soulmerge

+0

回答に記載されているとおり、各受信者の電子メールを送信したという事実を保存してください。しかし、あなたが何かヒントなしで(dbのエントリのような) – soulmerge

関連する問題