user1086352
user1086352

Reputation: 3

Send an email using php with mysql data included

I'm trying to send a list of recent entries into a mysql table via email once a week using cron jobs. Typically to call the list of recent entries I use this:

$result = mysql_query("SELECT * FROM stock WHERE PurchaseDate < '$TODAY' AND PurchaseDate > '$LASTWEEK'")
or die(mysql_error());
while ($list = mysql_fetch_array($result))

But obviously I can't put this code into the $message variable in php mail.

Any ideas?

Upvotes: 0

Views: 558

Answers (3)

Tyler Andersen
Tyler Andersen

Reputation: 1

try {

$result = mysql_query("SELECT * FROM your_table WHERE blank = 'blank' AND blank2 ='blank2'");
$num_rows = mysql_num_rows($result);

if($num_rows < 1) {
    throw new Exception('There is no user who qualifies...');
}
if(!$result) {
throw new Exception('An Error Occurred..');
}

//mail off whatever you need to each user that qualifies based on your query criteria..

while($row = mysql_fetch_array($result)) {
$firstname = stripslashes($row['firstname']);
$lastname = stripslashes($row['lastname']);
$email = stripslashes($row['email']);
//and any other variables you need for the email...

$subject = 'Some Subject';
$message = 'Hello '.$firstname.' blah..blah...';

mail($email, $subject, $message);
//do something else...
echo 'All users emailed.';
}

}

catch (Exception $e) {

echo $e->getMessage();

}

Upvotes: 0

epicdev
epicdev

Reputation: 922

The mail functions takes a string, and you are returning an array.

So you need to implode it implode(',', $list); or build a string with the result set.

You should use PHPMailer, Zend Mail or Swift_Mailer libraries that are safer and prevent for example from header injection.

Upvotes: 0

SeanWM
SeanWM

Reputation: 16989

$result = mysql_query("SELECT * FROM stock WHERE PurchaseDate < '$TODAY' AND PurchaseDate > '$LASTWEEK'") or die(mysql_error());
$entries = 'Entries: '; 
while ($list = mysql_fetch_array($result)) {
    $entries .= $list[entry] . ', ';
}

mail('[email protected]', 'Stock', $entries);

This is just an example. Not sure what your table looks like.

Upvotes: 2

Related Questions