我使用表单来获取将记录在我网站的简报中的电子邮件地址。 这个表单由AJAX发送管理并获得响应:
$.ajax({
url: "./control/newsletter/ct_newsletter_subscribe.php",
type: "POST",
data: $this.serialize(),
success: function(html) {
alert(html); // html contient l'id du dernier inscrit
if(html == 'erreur'){
var message = "<p>Erreur d'enregistrement en BDD</p>";
}else if(html != 'erreur'){
var message = "Adresse email enregistrée en BDD : id = "+html;
}
我希望在第二个函数中使用响应(获取lastInsertId)来获取记录的信息。
在文件ct_newsletter_subscribe.php中,我得到了lastInsertId,但我无法重复使用它。
$LastInsertId = add_email_newsletter($newsletterNom, $newsletterPrenom, $newsletterEmail, $newsletterGsm, $registered, $regdate, $codeConfirm);
echo '<script>alert("ct newsletter subscribe L36 : '.$LastInsertId.'")</script>';// DEBUG
$reponse = $LastInsertId;
echo '<script>alert("ct newsletter subscribe L38 : '.$reponse.'")</script>';// DEBUG
在这部分中,$ reponse和$ LastInsertId包含最后一个id,但我不能将它重用于另一个函数。 2“echo ...”没有给出我希望它们显示的变量 我不明白为什么。
答案 0 :(得分:0)
表单由带有AJAX的.js管理。 AJAX将$ _POST发送到ct_newsletter_subscribe.php。 在ct_newsletter_subscribe.php中,我调用了一个函数“add_email_newsletter”,他的响应$ LastInsertId是正确的。
然后我想将$ LastInsertId重用到另一个函数中:
// First function works correctly :
$LastInsertId = add_email_newsletter($newsletterNom, $newsletterPrenom, $newsletterEmail, $newsletterGsm, $registered, $regdate, $codeConfirm);
echo '<script>alert("ct newsletter subscribe L36 : '.$LastInsertId.'")</script>';// DEBUG -> $LastInsertId is empty
$reponse = $LastInsertId; // this result is correct
echo '<script>alert("ct newsletter subscribe L38 : '.$reponse.'")</script>';// DEBUG -> $reponse is empty
if($reponse != 'erreur'){ // if no error appear in the first function
echo '<script>alert("ct newsletter subscribe L42 : '.$reponse.'")</script>';// DEBUG
//Récupération des données enregistrées :
// Fonction container :
include_once('../../model/newsletter/mo_newsletter_email_infos.php');
//récupération des infos selon l'id retournée par $reponse :
$retourNewsletterEmailInfos = get_newletter_email_infos($LastInsertId);
$reponse .= ' & Fonction get_infos : '.$retourNewsletterEmailInfos[0]['email'];
}
echo $reponse;
然后在AJAX中,“html”结果正确地插入了最后一个id。
但是在PHP中,$ LastInsertId对于函数是空的:
$retourNewsletterEmailInfos = get_newletter_email_infos($LastInsertId);
调试行未在$ reponse中显示任何内容
echo '<script>alert("ct newsletter subscribe L42 : '.$reponse.'")</script>';// DEBUG