diff options
| author | Damien Regad <dregad@mantisbt.org> | 2015-12-27 20:18:53 +0100 |
|---|---|---|
| committer | Damien Regad <dregad@mantisbt.org> | 2015-12-27 20:18:53 +0100 |
| commit | 93164fe0f8d539200ac9c179aad65770371b09d1 (patch) | |
| tree | 7c884f6ef1985ce4459b9f93b4964124cd3a0abe | |
| parent | 3d83c0c3b99e0a1b6b847ab129fb24242f53b8d3 (diff) | |
| parent | 3dbf2fbc066757505adf37036558b126a1d2b3e8 (diff) | |
| download | adodb-93164fe0f8d539200ac9c179aad65770371b09d1.tar.gz adodb-93164fe0f8d539200ac9c179aad65770371b09d1.tar.bz2 adodb-93164fe0f8d539200ac9c179aad65770371b09d1.zip | |
Merge branch 'hotfix/5.20.2'
| -rw-r--r-- | docs/changelog.md | 6 | ||||
| -rw-r--r-- | drivers/adodb-db2ora.inc.php | 19 | ||||
| -rw-r--r-- | drivers/adodb-informix72.inc.php | 10 | ||||
| -rw-r--r-- | drivers/adodb-mssql.inc.php | 9 | ||||
| -rw-r--r-- | drivers/adodb-mssql_n.inc.php | 5 | ||||
| -rw-r--r-- | drivers/adodb-mssqlnative.inc.php | 4 | ||||
| -rw-r--r-- | drivers/adodb-mysql.inc.php | 1 | ||||
| -rw-r--r-- | drivers/adodb-mysqli.inc.php | 15 | ||||
| -rw-r--r-- | drivers/adodb-mysqlt.inc.php | 5 |
9 files changed, 50 insertions, 24 deletions
diff --git a/docs/changelog.md b/docs/changelog.md index f0e1a72f..8d759040 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -8,6 +8,12 @@ Older changelogs: ## 5.21.0 - ??-???-2015 +## 5.20.2 - 27-Dec-2015 + +- adodb: Remove a couple leftover PHP 4.x constructors (PHP7 compatibility). #139 +- mysql: MoveNext() now respects ADODB_ASSOC_CASE. #167 +- mssql, mysql, informix: Avoid PHP warning when closing recordset from destructor. #170 + ## 5.20.1 - 06-Dec-2015 - adodb: Fix regression introduced in 5.20.0, causing a PHP Warning when diff --git a/drivers/adodb-db2ora.inc.php b/drivers/adodb-db2ora.inc.php index c744bbd0..1a5b1620 100644 --- a/drivers/adodb-db2ora.inc.php +++ b/drivers/adodb-db2ora.inc.php @@ -22,15 +22,26 @@ if (!defined('ADODB_DB2OCI')){ define('ADODB_DB2OCI',1); +/** + * Callback function for preg_replace in _colonscope() + * @param array $p matched patterns + * return string '?' if parameter replaced, :N if not + */ function _colontrack($p) { -global $_COLONARR,$_COLONSZ; - $v = (integer) substr($p,1); - if ($v > $_COLONSZ) return $p; + global $_COLONARR, $_COLONSZ; + $v = (integer) substr($p[1], 1); + if ($v > $_COLONSZ) return $p[1]; $_COLONARR[] = $v; return '?'; } +/** + * smart remapping of :0, :1 bind vars to ? ? + * @param string $sql SQL statement + * @param array $arr parameters + * @return array + */ function _colonscope($sql,$arr) { global $_COLONARR,$_COLONSZ; @@ -38,7 +49,7 @@ global $_COLONARR,$_COLONSZ; $_COLONARR = array(); $_COLONSZ = sizeof($arr); - $sql2 = preg_replace("/(:[0-9]+)/e","_colontrack('\\1')",$sql); + $sql2 = preg_replace_callback('/(:[0-9]+)/', '_colontrack', $sql); if (empty($_COLONARR)) return array($sql,$arr); diff --git a/drivers/adodb-informix72.inc.php b/drivers/adodb-informix72.inc.php index 8e1872a0..e7f0c035 100644 --- a/drivers/adodb-informix72.inc.php +++ b/drivers/adodb-informix72.inc.php @@ -378,7 +378,10 @@ class ADODB_informix72 extends ADOConnection { function _close() { $this->lastQuery = false; - return ifx_close($this->_connectionID); + if($this->_connectionID) { + return ifx_close($this->_connectionID); + } + return true; } } @@ -490,7 +493,10 @@ class ADORecordset_informix72 extends ADORecordSet { is running. All associated result memory for the specified result identifier will automatically be freed. */ function _close() { - return ifx_free_result($this->_queryID); + if($this->_queryID) { + return ifx_free_result($this->_queryID); + } + return true; } } diff --git a/drivers/adodb-mssql.inc.php b/drivers/adodb-mssql.inc.php index 003fde67..198929b2 100644 --- a/drivers/adodb-mssql.inc.php +++ b/drivers/adodb-mssql.inc.php @@ -1060,10 +1060,13 @@ class ADORecordset_mssql extends ADORecordSet { function _close() { - $rez = mssql_free_result($this->_queryID); - $this->_queryID = false; - return $rez; + if($this->_queryID) { + $this->_queryID = false; + return mssql_free_result($this->_queryID); + } + return true; } + // mssql uses a default date like Dec 30 2000 12:00AM static function UnixDate($v) { diff --git a/drivers/adodb-mssql_n.inc.php b/drivers/adodb-mssql_n.inc.php index 95e0d71c..d1768571 100644 --- a/drivers/adodb-mssql_n.inc.php +++ b/drivers/adodb-mssql_n.inc.php @@ -53,11 +53,6 @@ include_once(ADODB_DIR.'/drivers/adodb-mssql.inc.php'); class ADODB_mssql_n extends ADODB_mssql { var $databaseType = "mssql_n"; - function ADODB_mssqlpo() - { - ADODB_mssql::ADODB_mssql(); - } - function _query($sql,$inputarr=false) { $sql = $this->_appendN($sql); diff --git a/drivers/adodb-mssqlnative.inc.php b/drivers/adodb-mssqlnative.inc.php index b83f7f06..1dcc1961 100644 --- a/drivers/adodb-mssqlnative.inc.php +++ b/drivers/adodb-mssqlnative.inc.php @@ -1089,7 +1089,9 @@ class ADORecordset_mssqlnative extends ADORecordSet { */ function _close() { - $rez = sqlsrv_free_stmt($this->_queryID); + if($this->_queryID) { + $rez = sqlsrv_free_stmt($this->_queryID); + } $this->_queryID = false; return $rez; } diff --git a/drivers/adodb-mysql.inc.php b/drivers/adodb-mysql.inc.php index 883aa3dd..773349a8 100644 --- a/drivers/adodb-mysql.inc.php +++ b/drivers/adodb-mysql.inc.php @@ -797,6 +797,7 @@ class ADORecordSet_mysql extends ADORecordSet{ //return adodb_movenext($this); //if (defined('ADODB_EXTENSION')) return adodb_movenext($this); if (@$this->fields = mysql_fetch_array($this->_queryID,$this->fetchMode)) { + $this->_updatefields(); $this->_currentRow += 1; return true; } diff --git a/drivers/adodb-mysqli.inc.php b/drivers/adodb-mysqli.inc.php index bffbc5d3..38979229 100644 --- a/drivers/adodb-mysqli.inc.php +++ b/drivers/adodb-mysqli.inc.php @@ -1042,7 +1042,10 @@ class ADORecordSet_mysqli extends ADORecordSet{ $this->_currentRow++; $this->fields = @mysqli_fetch_array($this->_queryID,$this->fetchMode); - if (is_array($this->fields)) return true; + if (is_array($this->fields)) { + $this->_updatefields(); + return true; + } $this->EOF = true; return false; } @@ -1059,11 +1062,15 @@ class ADORecordSet_mysqli extends ADORecordSet{ //if results are attached to this pointer from Stored Proceedure calls, the next standard query will die 2014 //only a problem with persistant connections - while(mysqli_more_results($this->connection->_connectionID)){ - @mysqli_next_result($this->connection->_connectionID); + if($this->connection->_connectionID) { + while(mysqli_more_results($this->connection->_connectionID)){ + mysqli_next_result($this->connection->_connectionID); + } } - @mysqli_free_result($this->_queryID); + if($this->_queryID) { + mysqli_free_result($this->_queryID); + } $this->_queryID = false; } diff --git a/drivers/adodb-mysqlt.inc.php b/drivers/adodb-mysqlt.inc.php index 458fae92..10549c66 100644 --- a/drivers/adodb-mysqlt.inc.php +++ b/drivers/adodb-mysqlt.inc.php @@ -130,11 +130,6 @@ class ADORecordSet_mysqlt extends ADORecordSet_mysql{ class ADORecordSet_ext_mysqlt extends ADORecordSet_mysqlt { - function ADORecordSet_ext_mysqlt($queryID,$mode=false) - { - parent::__construct($queryID,$mode); - } - function MoveNext() { return adodb_movenext($this); |
