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