How To Send MYSQL Data To An Email

rasputin009

New member
After the customer fills the form, the form data is sent to mysql and an email gets sent to me with the last form data that the customer submitted. But, the email "last mysql data" is not going as inline text. Please help me. Sample code is given below.

<?php
define('DB_NAME', 'XXXXXXX');
define('DB_USER', 'XXXXXXX');
define('DB_PASSWORD', 'XXXXXXX');
define('DB_HOST', 'localhost');
$link = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
//Start Posting the data in Mysql database from Form Input
$value = $_POST['input1'];
$value2 = $_POST['MAmount'];
$sql = "INSERT INTO demo (input1, MAmount) VALUES ('$value', '$value2')";
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}
//start print the database
$data = mysql_query("SELECT * FROM demo ORDER BY ID DESC LIMIT 1")
or die(mysql_error());
Print "<table border cellpadding=3>";
while($info = mysql_fetch_array( $data ))
{
Print "<tr>";
Print "<th>ID:</th> <td>".$info['ID'] . "</td> ";
Print "<th>Input1:</th> <td>".$info['input1'] . "</td> ";
Print "<th>MAmount:</th> <td>".$info['MAmount'] . " </td></tr>";
}
Print "</table>";
mysql_close();
//end print the database on form processing page
//start emailing the data
date_default_timezone_set('Asia/Kolkata');
require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
//$body = "gdssdh";
//$body = preg_replace("[\]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "ssl://XXXXXXX.XXXXXXX.org"; // SMTP server
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = " www.astaguru.com "; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "XXXXXXX.com"; // GMAIL username
$mail->Password = "XXXXXXX"; // GMAIL password
$mail->SetFrom('contact@XXXXXXXX.com', 'HAL');
//$mail->AddReplyTo("XXXXXXX', 'First Last");
$mail->Subject = "XXXXXXX";
//THE PROBLEM IS HERE WHEN I WANT TO SEND THE DATA AS INLINE TEXT TO EMAIL FROM MYSQL IT IS NOT WORKING. ONLY "PRINT THE DATA" IS SENDING TO EMAIL.
$body = 'Print the data';
mysql_connect("localhost","XXXXXXX","XXXXXXX");
@mysql_select_db("XXXXXXX");
$query["SELECT * FROM demo ORDER BY ID DESC LIMIT 1"];
$result = mysql_query($query);
//while ($row = mysql_fetch_array ($result)) {
// $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = "XXXXXXX";
$mail->AddAddress($address, "user2");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
 
After the customer fills the form, the form data is sent to mysql and an email gets sent to me with the last form data that the customer submitted. But, the email "last mysql data" is not going as inline text. Please help me. Sample code is given below.

<?php
define('DB_NAME', 'XXXXXXX');
define('DB_USER', 'XXXXXXX');
define('DB_PASSWORD', 'XXXXXXX');
define('DB_HOST', 'localhost');
$link = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
//Start Posting the data in Mysql database from Form Input
$value = $_POST['input1'];
$value2 = $_POST['MAmount'];
$sql = "INSERT INTO demo (input1, MAmount) VALUES ('$value', '$value2')";
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}
//start print the database
$data = mysql_query("SELECT * FROM demo ORDER BY ID DESC LIMIT 1")
or die(mysql_error());
Print "<table border cellpadding=3>";
while($info = mysql_fetch_array( $data ))
{
Print "<tr>";
Print "<th>ID:</th> <td>".$info['ID'] . "</td> ";
Print "<th>Input1:</th> <td>".$info['input1'] . "</td> ";
Print "<th>MAmount:</th> <td>".$info['MAmount'] . " </td></tr>";
}
Print "</table>";
mysql_close();
//end print the database on form processing page
//start emailing the data
date_default_timezone_set('Asia/Kolkata');
require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
//$body = "gdssdh";
//$body = preg_replace("[\]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "ssl://XXXXXXX.XXXXXXX.org"; // SMTP server
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = " www.astaguru.com "; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "XXXXXXX.com"; // GMAIL username
$mail->Password = "XXXXXXX"; // GMAIL password
$mail->SetFrom('contact@XXXXXXXX.com', 'HAL');
//$mail->AddReplyTo("XXXXXXX', 'First Last");
$mail->Subject = "XXXXXXX";
//THE PROBLEM IS HERE WHEN I WANT TO SEND THE DATA AS INLINE TEXT TO EMAIL FROM MYSQL IT IS NOT WORKING. ONLY "PRINT THE DATA" IS SENDING TO EMAIL.
$body = 'Print the data';
mysql_connect("localhost","XXXXXXX","XXXXXXX");
@mysql_select_db("XXXXXXX");
$query["SELECT * FROM demo ORDER BY ID DESC LIMIT 1"];
$result = mysql_query($query);
//while ($row = mysql_fetch_array ($result)) {
// $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = "XXXXXXX";
$mail->AddAddress($address, "user2");
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
Your issue is with this code block:
Code:
$body = 'Print the data';mysql_connect("localhost","XXXXXXX","XXXXXXX");@mysql_select_db("XXXXXXX");$query["SELECT * FROM demo ORDER BY ID DESC LIMIT 1"];$result = mysql_query($query);
The $body variable is assigned a static string instead of the actual data fetched from the database.
The query is incorrectly formatted and not executed properly, which means no data is retrieved to include in the email body.

Try this:
Code:
// Correctly execute the query
$query = "SELECT * FROM demo ORDER BY ID DESC LIMIT 1";
$result = mysql_query($query);

if ($result) {
    $row = mysql_fetch_array($result);
    $body = "ID: " . $row['ID'] . "\n" .
            "Input1: " . $row['input1'] . "\n" .
            "MAmount: " . $row['MAmount'];
} else {
    $body = "No data found.";
}

// Set the email body
$mail->MsgHTML($body);
 
Hi Moorcam,

I understand now that the issue was with how the query was being executed and how the data was being assigned to the $body variable. I will update the code to properly fetch the data from the database and include it in the email body as you suggested. I’ll give it a try and let you know how it goes. Many thanks for your assistance!
 
Hi Moorcam,

I understand now that the issue was with how the query was being executed and how the data was being assigned to the $body variable. I will update the code to properly fetch the data from the database and include it in the email body as you suggested. I’ll give it a try and let you know how it goes. Many thanks for your assistance!
You are welcome.
Also, do not use mysql. That is gone since php5. Use MySQLi or PDO. More info here: https://www.danoriordan.com/significant-differences-between-mysql-mysqli-and-pdo/
 
@ Moorcam - Thank you for pointing that out!

I’ll make sure to update my code to use modern approaches like MySQLi or PDO. Many thanks for your valuable guidance!
 
Back
Top