diff options
| author | Damien Regad <dregad@mantisbt.org> | 2015-12-16 00:42:26 +0100 |
|---|---|---|
| committer | Damien Regad <dregad@mantisbt.org> | 2015-12-16 01:26:52 +0100 |
| commit | c32f1525136ff3afcf1e3ed30a17818b1bcd1731 (patch) | |
| tree | ba4c20b65c0d1d7a3fb29a825ba240323cb4dcd7 | |
| parent | bdeb28f214c29a54a88cef995e251702f7181ab7 (diff) | |
| download | adodb-c32f1525136ff3afcf1e3ed30a17818b1bcd1731.tar.gz adodb-c32f1525136ff3afcf1e3ed30a17818b1bcd1731.tar.bz2 adodb-c32f1525136ff3afcf1e3ed30a17818b1bcd1731.zip | |
Better replacement for preg_replace '/e' flag
Instead of creating an anonymous function, modify the existing
_colontrack() function to be used as the callback
Fixes #168
| -rw-r--r-- | drivers/adodb-db2ora.inc.php | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/adodb-db2ora.inc.php b/drivers/adodb-db2ora.inc.php index ce035800..70440872 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_callback('/(:[0-9]+)/', create_function('$m', 'return _colontrack($m[0]);'), $sql); + $sql2 = preg_replace_callback('/(:[0-9]+)/', '_colontrack', $sql); if (empty($_COLONARR)) return array($sql,$arr); |
