Mysql 如何在Joomla 1.5中创建SQL事务?

Mysql 如何在Joomla 1.5中创建SQL事务?,mysql,joomla1.5,Mysql,Joomla1.5,我已经在Joomla中成功创建了一个组件,用户可以在其中更新数据库内容。问题是我有两个查询要执行,如果第二个查询失败,第一个查询所做的更改应该被丢弃。我已经尝试过这些代码,但它不会让我回滚: $db = JFactory::getDBO(); $db->setQuery("BEGIN"); $db->query(); $db->setQuery($delete_script); $db->query(); $db->

我已经在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();

必须对最近执行的查询执行回滚

实际上,
$update\u query
是产生错误的查询,如果发生这种情况,我想放弃
$delete\u query
所做的更改。这可能吗?如果更新查询不起作用,则说明逻辑正确。它应该回滚最近执行的查询。您只需在
开始之前使用
开始事务
。休息很好。