简体   繁体   English

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

[英]How to create SQL transactions in Joomla 1.5?

I've successfully created a component in Joomla where a user can update database content. 我已经在Joomla中成功创建了一个组件,用户可以在其中更新数据库内容。 The problem is I have two queries to execute, if the second query fails, the changes done by first query should be discarded. 问题是我有两个查询要执行,如果第二个查询失败,则应该放弃第一个查询所做的更改。 I have tried these codes and it's not giving me rollback: 我已经尝试了以下代码,但并没有回滚:

    $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();

So how do you create a transaction in Joomla 1.5? 那么如何在Joomla 1.5中创建事务?

You should perform like this: 您应该执行以下操作:

$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();

Rollback must be performed on recent executed query. 必须对最近执行的查询执行回滚。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM