diff options
| author | marcelto <marcel.ouellette@gmail.com> | 2017-09-06 23:34:49 -0400 |
|---|---|---|
| committer | Damien Regad <dregad@mantisbt.org> | 2017-11-25 18:10:15 +0100 |
| commit | b741929818359e17b0b1725f6dfab1d97bccbdda (patch) | |
| tree | 6726480cee2d499b31a21a98d4cb16eeffe2e56d | |
| parent | 7860e95ade59e5b83727def93dc7048f1c99e018 (diff) | |
| download | adodb-b741929818359e17b0b1725f6dfab1d97bccbdda.tar.gz adodb-b741929818359e17b0b1725f6dfab1d97bccbdda.tar.bz2 adodb-b741929818359e17b0b1725f6dfab1d97bccbdda.zip | |
PDO sqlsrv fix auto-commit error
Add SetAutoCommit() method for PDO drivers.
Avoids PDO Error: The auto-commit mode cannot be changed for this driver
Fixes #347
| -rw-r--r-- | drivers/adodb-pdo.inc.php | 17 | ||||
| -rw-r--r-- | drivers/adodb-pdo_mysql.inc.php | 9 | ||||
| -rw-r--r-- | drivers/adodb-pdo_oci.inc.php | 9 |
3 files changed, 32 insertions, 3 deletions
diff --git a/drivers/adodb-pdo.inc.php b/drivers/adodb-pdo.inc.php index b7b5577f..41d5b98f 100644 --- a/drivers/adodb-pdo.inc.php +++ b/drivers/adodb-pdo.inc.php @@ -335,6 +335,17 @@ class ADODB_pdo extends ADOConnection { return $err; } + /** + * @param bool $auto_commit + * @return void + */ + function SetAutoCommit($auto_commit) + { + if(method_exists($this->_driver, 'SetAutoCommit')) { + $this->_driver->SetAutoCommit($auto_commit); + } + } + function SetTransactionMode($transaction_mode) { if(method_exists($this->_driver, 'SetTransactionMode')) { @@ -358,7 +369,7 @@ class ADODB_pdo extends ADOConnection { } $this->transCnt += 1; $this->_autocommit = false; - $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,false); + $this->SetAutoCommit(false); return $this->_connectionID->beginTransaction(); } @@ -384,7 +395,7 @@ class ADODB_pdo extends ADOConnection { $this->_autocommit = true; $ret = $this->_connectionID->commit(); - $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,true); + $this->SetAutoCommit(true); return $ret; } @@ -406,7 +417,7 @@ class ADODB_pdo extends ADOConnection { $this->_autocommit = true; $ret = $this->_connectionID->rollback(); - $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT,true); + $this->SetAutoCommit(true); return $ret; } diff --git a/drivers/adodb-pdo_mysql.inc.php b/drivers/adodb-pdo_mysql.inc.php index 36d97b6e..becfad9e 100644 --- a/drivers/adodb-pdo_mysql.inc.php +++ b/drivers/adodb-pdo_mysql.inc.php @@ -85,6 +85,15 @@ class ADODB_pdo_mysql extends ADODB_pdo { return $ret; } + /** + * @param bool $auto_commit + * @return void + */ + function SetAutoCommit($auto_commit) + { + $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT, $auto_commit); + } + function SetTransactionMode($transaction_mode) { $this->_transmode = $transaction_mode; diff --git a/drivers/adodb-pdo_oci.inc.php b/drivers/adodb-pdo_oci.inc.php index 0bca35e3..5bd462e3 100644 --- a/drivers/adodb-pdo_oci.inc.php +++ b/drivers/adodb-pdo_oci.inc.php @@ -90,4 +90,13 @@ class ADODB_pdo_oci extends ADODB_pdo_base { else return $retarr; } + + /** + * @param bool $auto_commit + * @return void + */ + function SetAutoCommit($auto_commit) + { + $this->_connectionID->setAttribute(PDO::ATTR_AUTOCOMMIT, $auto_commit); + } } |
