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

标签 mysql joomla1.5

我已经在 J​​oomla 中成功创建了一个组件,用户可以在其中更新数据库内容。问题是我有两个查询要执行,如果第二个查询失败,第一个查询所做的更改应该被丢弃。我已经尝试了这些代码,但没有给我回滚:

    $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/

相关文章:

joomla1.5 - 以编程方式将文章添加到 Joomla

php - 如何使用 <select> 标签中的值更新我的数据库中的值 - (不是 $_POST)

mysql - Workbench Mysql 导入错误 1050 (42S01)

mysql - 从第一个表中获取不匹配的记录

php - 如何每30条记录换行

php - Android登录mysql数据库

javascript - 在 </html> 标签后放置 javascript

joomla - 使用 Joomla 和 Google Apps 发送电子邮件

php - Joomla 登录重定向回页面到上一页

Mysql结果多样化