aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/db/mysql4.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/db/mysql4.php')
-rw-r--r--phpBB/db/mysql4.php19
1 files changed, 16 insertions, 3 deletions
diff --git a/phpBB/db/mysql4.php b/phpBB/db/mysql4.php
index a712265ff0..de01f42b09 100644
--- a/phpBB/db/mysql4.php
+++ b/phpBB/db/mysql4.php
@@ -105,7 +105,7 @@ class sql_db
if( $query != "" )
{
$this->num_queries++;
- if( $transaction == BEGIN_TRANSACTION )
+ if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
{
$result = mysql_query("BEGIN", $this->db_connect_id);
if(!$result)
@@ -117,15 +117,28 @@ class sql_db
$this->query_result = mysql_query($query, $this->db_connect_id);
}
+ else
+ {
+ if( $transaction == END_TRANSACTION && $this->in_transaction )
+ {
+ $result = mysql_query("COMMIT", $this->db_connect_id);
+ }
+ }
if( $this->query_result )
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
- if( $transaction == END_TRANSACTION )
+ if( $transaction == END_TRANSACTION && $this->in_transaction )
{
- $result = mysql_query("COMMIT", $this->db_connect_id);
+ $this->in_transaction = FALSE;
+
+ if ( !mysql_query("COMMIT", $this->db_connect_id) )
+ {
+ mysql_query("ROLLBACK", $this->db_connect_id);
+ return false;
+ }
}
return $this->query_result;