我使用一个表格来获取将记录在我的网站时事通讯中的电子邮件地址。此表单由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
在本部分中,$repense和$LastInsertId包含最后一个id,但我不能将其用于其他函数。2个"echo…"没有给出我希望它们显示的变量我不明白为什么。
表单由带有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