我已经在 Joomla 中成功创建了一个组件,用户可以在其中更新数据库内容。问题是我有两个查询要执行,如果第二个查询失败,第一个查询所做的更改应该被丢弃。我已经尝试了这些代码,但没有给我回滚:
$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 中创建交易?
最佳答案
你应该这样执行:
$db = JFactory::getDBO();
$db->setQuery("BEGIN");
$db->query();
$db->setQuery($delete_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');
}
$db->setQuery($update_script);
$db->query();
if(!$db->getErrorMsg()) {
$db->setQuery("COMMIT");
$db->query();
JFactory::getApplication()->enqueueMessage(JText::_('Loan types have been saved successfully!'), 'message');
}
JRequest::setVar( 'view', 'loantypes' );
parent::display();
必须对最近执行的查询执行回滚。
关于mysql - 如何在 Joomla 1.5 中创建 SQL 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15965125/