Ben (veritabanında saklanan) yönetici kullanıcılar düzenleme HTML şablon e-postaları sağlayan bir PHP / MySQL web uygulamasında basit bir sayfa var. Esasen bir textarea içine bir şablon kullanıcı türlerini düzenlemek ve hangi geri aynı sayfaya mesaj bir form gönderdiğinde için.
Form gönderildiğinde, bir PHP fonksiyon MySQL saklanan işleve bir parameterised sorgusu vasıtasıyla veritabanında kaydı günceller çağrılır.
Son olarak kayıt veritabanından retreived ve bilgi sayfasında görüntülenir - sayfa ilk kez görüntülendiğinde edilirken, bu adımı da olur.
Ben yaşıyorum sorun ekran için alınmadan önce kayıt veritabanında güncellenmektedir olmasına rağmen, sayfa hala oluşturulmadan güncellemeden önce eski verileri görüntüleyen olmasıdır. Böyle güncelleme başarılı olduğunu söyleyerek afiş mesajı olarak sayfadaki diğer şeyler, DO güncellendi olsun, bu yüzden bir tarayıcı önbelleği sorun olduğunu sanmıyorum. Satır ekleme: uyku (1); kayıt güncelleme sorunu çözer sonra çok sayfa güncellenen bir kaydını gösterir, ancak performans nedenlerle bu ideal değildir, ve bu sorun ilk etapta neden oluyor ben anlamıyorum.
Burada sayfanın üst PHP kodu:
require_once('includes/global.php');
require_once('includes/emailtemplateutils.php');
$strMsg = '';
$lngEmailTemplatePK = ConvertToString($_GET['key'], 0);
if (ConvertToString($_POST['hdnSave']) == '1')
{
$strFromAddress = ConvertToString($_POST['txtFromAddress']);
$strSubjectLine = ConvertToString($_POST['txtSubjectLine']);
$strBodyHTML = ConvertToString($_POST['txtBodyHTML']);
if (EmailTemplate_Update($lngEmailTemplatePK, $strFromAddress, $strSubjectLine, $strBodyHTML))
{
$strMsg = FormatMsg('E-mail template updated.');
}
else
{
$strMsg = FormatErrorMsg('Could not save e-mail template!');
}
}
$objEmailTemplate = EmailTemplate_Display($lngEmailTemplatePK);
Bu aslında güncelleştirme yapar EmailTemplate_Update () fonksiyonunun kodu:
function EmailTemplate_Update($lngEmailTemplatePK, $strFromAddress, $strSubjectLine, $strBodyHTML)
{
$objConn = new mysqli(cstrGlobal_DbServer, cstrGlobal_DbUsername, cstrGlobal_DbPassword, cstrGlobal_DbCatalog);
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$strQuery = "SELECT srf_EmailTemplate_Update(?, ?, ?, ?)";
$objStmt = $objConn->prepare($strQuery);
$objStmt->bind_param('isss', $lngEmailTemplatePK, EmptyToNull($strFromAddress), EmptyToNull($strSubjectLine), EmptyToNull($strBodyHTML));
$objStmt->execute();
$objStmt->bind_result($lngRetVal);
$objStmt->fetch();
$objStmt->close();
$objConn->close();
return $lngRetVal == 1;
}
Ekran için kayıt almak için işlevi biraz daha kıvrık ama aslında sadece mysqli fetch_object kullanarak bir nesne olarak kaydını geri getiriyor ()
Lütfen yardım edin.