Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How Can I Use MySQL To Send Data To An Email

rasputin009

Technical User
Jan 10, 2025
1
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 = " https://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!";
}
?>
 
Trying to understand the code I think you have two options:

replace $body = 'Print the data'; with
Code:
$body = print_r($_POST, true);
That'll create a body that's not pretty formatted, but contains all the imtesm of $_POST that came from the submitted HTML form.
Then you have a commented while loop that would iterate the SQL result of the query you do: SELECT * FROM demo ORDER BY ID DESC LIMIT 1
It would make sense to complete the loop instead of commenting it.

Look for a simple sample code that executes a query and outputs all result rows, that's what you need going that route, in principle.

But: As you insert that last (LIMTI 1) row in your code by storing the posted HTML form element values with the sql query $sql = "INSERT INTO demo (input1, MAmount) VALUES ('$value', '$value2')"; you want to have $value and $value2 in your HTML body. What hinders you to set the $body to these two values?
 

Part and Inventory Search

Sponsor

Back
Top