2017-02-09 184 views
1

我有一個插入語句與表單數據,我必須給用戶一個消息,如果它是成功與否。在哪裏檢查INSERT語句的成功或失敗?

這是我的代碼:

DB::get()->beginTransaction(); 
$this->inTransaction = true; 

$queryInsert = "INSERT INTO DB::$buchungenTabelle 
        (kurs_id, anrede, vorname, nachname, email, 
        telefon, status, anzahl_teilnehmer) 
       VALUES (?,?,?,?,?,?,?,?) 
       "; 

$stmt = DB::get()->prepare($queryInsert); 

$stmt->execute(array($eventId, $salutation, $firstName, $familyName, 
        $email, $telephone, 'gebucht', $participant)); 

DB::get()->commit(); 
$this->inTransaction = false; 

我應該檢查​​或commit()的返回值? 即使在開放交易中,​​的返回值是否可靠?謝謝你的幫助!

回答

1

只要給予成功消息無條件。在插入失敗的情況下,原因可能是服務器故障,並且在這種情況下,應該通過與您的特定應用程序代碼完全獨立的專用錯誤處理程序來顯示通用錯誤消息「服務器錯誤,請稍後嘗試」。

此外,根本不需要交易。因此您的代碼將是

$queryInsert = "INSERT INTO DB::$buchungenTabelle 
       (kurs_id, anrede, vorname, nachname, email, 
       telefon, status, anzahl_teilnehmer) 
      VALUES (?,?,?,?,?,?,?,?)"; 
DB::get()->prepare($queryInsert)->execute(array($eventId, $salutation, $firstName, 
      $familyName, $email, $telephone, 'gebucht', $participant)); 
echo "Success"; 
+0

感謝您的回答!我想做一個事務,因爲這些事件有最大數量的參與者,我想添加一個數據驗證。你認爲這種情況下的交易是否也是超級? – Vizz85

+0

對不起,我不明白。你想添加什麼樣的驗證? –

+0

我的意思是驗證發佈的數據並檢查是否有足夠的可用空間來放置這個事件(在這裏我需要另一個查詢) – Vizz85