1
我已經成功地在Joomla中創建了一個用戶可以更新數據庫內容的組件。問題是我有兩個查詢要執行,如果第二個查詢失敗,第一個查詢完成的更改應該被丟棄。我試過這些代碼,它不給我回滾:如何在Joomla 1.5中創建SQL事務?
$db = JFactory::getDBO();
$db->setQuery("BEGIN");
$db->query();
$db->setQuery($delete_script);
$db->query();
$db->setQuery($update_script);
$db->query();
if($db->getErrorMsg())
{
$db->setQuery("ROLLBACK");
$db->query();
JFactory::getApplication()->enqueueMessage(JText::_($sql_script . 'An error occurred while saving loan types. Please check formatting and try again.'), 'error');
}
else
{
$db->setQuery("COMMIT");
$db->query();
JFactory::getApplication()->enqueueMessage(JText::_('Loan types have been saved successfully!'), 'message');
}
JRequest::setVar('view', 'loantypes');
parent::display();
那麼你如何在Joomla 1.5中創建一個事務?
實際上,'$ update_query'是產生錯誤的那個,我想放棄'$ delete_query'完成的更改(如果發生的話)。那可能嗎? – dpp
如果您的更新查詢不起作用,那麼您的邏輯是正確的。它應該回滾最近執行的查詢。你只需要在'BEGIN'之前使用'START TRANSACTION'。休息很好。 – Harpreet