From 28b38f054786014f436eefa019308eb8658cb711 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Tue, 5 Mar 2002 02:19:38 +0000 Subject: Fixed various transaction related issues and changed mssql-odbc name to ... mssql-odbc, hopefully this hasn't been (and won't be) responsible for any problems ... git-svn-id: file:///svn/phpbb/trunk@2269 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/db/msaccess.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'phpBB/db/msaccess.php') diff --git a/phpBB/db/msaccess.php b/phpBB/db/msaccess.php index a2ae1a32a5..fe45540be2 100644 --- a/phpBB/db/msaccess.php +++ b/phpBB/db/msaccess.php @@ -94,7 +94,7 @@ class sql_db { $this->num_queries++; - if( $transaction == BEGIN_TRANSACTION ) + if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction ) { if( !odbc_autocommit($this->db_connect_id, false) ) { @@ -195,16 +195,35 @@ class sql_db if( $transaction == END_TRANSACTION && $this->in_transaction ) { - odbc_commit($this->db_connect_id); - odbc_autocommit($this->db_connect_id, true); $this->in_transaction = FALSE; + + if ( !@odbc_commit($this->db_connect_id) ) + { + odbc_rollback($this->db_connect_id); + odbc_autocommit($this->db_connect_id, true); + return false; + } + odbc_autocommit($this->db_connect_id, true); } return $this->result; } else { - return false; + if( $transaction == END_TRANSACTION && $this->in_transaction ) + { + $this->in_transaction = FALSE; + + if ( !@odbc_commit($this->db_connect_id) ) + { + odbc_rollback($this->db_connect_id); + odbc_autocommit($this->db_connect_id, true); + return false; + } + odbc_autocommit($this->db_connect_id, true); + } + + return true; } } -- cgit v1.2.1