考虑以下代码:
<?php
//Original code: http://myprogrammingblog.com/2013/08/27/how-to-make-a-contact-form- with-bootstrap-3-jqueryphphtml5jqbootstrapvalidation/
//Modified to send email confirmation to bidder and to write file with data
// check if fields passed are empty
if(empty($_POST['name']) ||
empty($_POST['firstName']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
empty($_POST['date']) ||
empty($_POST['itemNo']) ||
empty($_POST['itemName']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";file_put_contents('results.txt', "No arguments Provided!", FILE_APPEND);
return false;
}
$name = $_POST['name'];
$firstName = $_POST['firstName'];
$email_address = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$date = $_POST['date'];
$itemNo = $_POST['itemNo'];
$itemName = $_POST['itemName'];
// Require to process DB access and updates
require_once ('insertBid.php');
// create email notice and send it to administrator
$to = '******@gmail.com'; //admin email
$email_subject = "Nouvelle enchère de l'encan silencieux Équipe 300PAS";
$email_body = "Tu as reçu une nouvelle enchère.\n\n".
"Voici les details :\n".
"Nom: $firstName $name \n".
"Date de la nouvelle enchère : $date \n".
"Description de l'enchère : $itemNo - $itemName \n".
"Courriel : $email_address\n".
"Téléphone : $phone\n".
"Montant soumis : $message $";
$headers = "From: ******@yveschaput.com\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
// create email confirmation and send it to bidder
$to = $email_address; // bidder's email
$email_subject = "Confirmation de votre enchère";
$email_body = "Bonjour $firstName $name, \n\n".
"Merci pour votre offre. \n".
"Voici les details:\n \nVotre offre est pour : $itemNo - $itemName \n".
"Date de votre offre : $date \n".
"Montant de votre offre : $message $".
"\n\nSi vous êtes le plus haut soumissionaire, vous serez averti par courriel ou téléphone ($phone) à la fin de l'enchère.".
"\n\nL'équipe 300PAS Trophé Rose des Andes.";
$headers = "From: ******@yveschaput.com\n";
$headers .= "Reply-To: ******@yveschaput.com";
mail($to,$email_subject,$email_body,$headers);
return true;
?>
现在,我的联系表单中有另一个类似的脚本,它向管理员发送一封电子邮件,它运行正常。
我在这里发布的脚本唯一真正的区别是require_once
将数据插入数据库,第二封电子邮件发送给用户。
该脚本至少可以执行对insertBid.php脚本的调用,因为de DB会更新。但是没有发送电子邮件。我知道这不是服务器问题,因为发送电子邮件的其他脚本确实有效。
在我以前的测试中,在进行任何后端脚本编写之前,这个脚本有效,但它没有调用这个insertBid.php。
这是insertBid.php脚本,如果它可以帮助你解决这个问题:
<?php
# connect to the database
require_once('connect.php');
#On concatene le prénom et le nom dans une même variable
$fullName = $firstName . " " . $name;
#pour debug, on s'assure que les détails sont correct et on met le tout dans un fichier
$bid = $fullName. "," . $email_address . "," . $phone . "," . $message . "," . $date . "," . $itemNo . "," . $itemName;
file_put_contents('results.txt', $bid, FILE_APPEND);
#Requête d'insertion de chaque offre dans la BD
$sql = "INSERT INTO encan(nom,email,phone,itemNo,itemDesc,bid,bidDate) VALUES (:nom,:email,:phone,:itemNo,:itemDesc,:bid,:bidDate)";
$q = $dbh->prepare($sql);
$q->execute(array(':nom' => $fullName, ':email' => $email_address, ':phone' => $phone, ':itemNo' => $itemNo, ':itemDesc' => $itemName, ':bid' => $message, ':bidDate' => $date));
$affected_rows = $stmt->rowCount();
return true;
?>
任何帮助都非常值得赞赏。感谢。
答案 0 :(得分:0)
该死!我在PHP文件夹中找到了一个error_log文件,其中包含我的所有PHP脚本。事实证明,这是一个简单的错误变量错误,它在完成之前停止了脚本。
在我的insertBid.php脚本中,我从另一个脚本中复制/粘贴了部分代码,我忘了更改$affected_rows = $stmt->rowCount();
。 PDO对象名为$ q,而不是$ stmt。
我甚至没有使用那条线。啧!
现在我用它来验证SQL查询if ($affected_rows !=0){return $affected_rows;}
,
并从调用脚本中写入一个日志文件,这样我就可以更容易地跟踪发生的事情。
总的noob错误,这就是我。 很抱歉带走了你宝贵的时间。 (羞耻地留下我的双腿之间的尾巴)