From 935956b8c292030498db0971cff7f4783ba8b779 Mon Sep 17 00:00:00 2001 From: skodak Date: Mon, 27 Oct 2008 12:00:04 +0000 Subject: [PATCH] MDL-17020 dml: native pgsql driver - $ bound syntax fully implemented, we do not need string for exception anymore --- lang/en_utf8/error.php | 1 - lib/dml/moodle_database.php | 13 +++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lang/en_utf8/error.php b/lang/en_utf8/error.php index 3fd0cced9d..bae3431959 100644 --- a/lang/en_utf8/error.php +++ b/lang/en_utf8/error.php @@ -11,7 +11,6 @@ $string['blockcannotconfig'] = 'This block does not support global configuration $string['blocknameconflict'] = 'Naming conflict: block $a->name has the same title with an existing block: $a->conflict!'; $string['backupcontainexternal'] = 'This backup file contains external Moodle Network Hosts that are not configured locally'; $string['backuptablefail'] = 'Backup tables could NOT be set up successfully!'; -$string['boundsyntaxnotsupport'] = 'Pg \$1, \$2 bound syntax not supported yet :-('; $string['cannotassignanthing'] = 'Cannot assign moodle/site:doanything'; $string['cannotassignrole'] = 'Cannot assign role in course'; $string['cannotassignselfasparent'] = 'Cannot assign self as parent!'; diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php index d3c6125896..e027465e9e 100644 --- a/lib/dml/moodle_database.php +++ b/lib/dml/moodle_database.php @@ -431,8 +431,17 @@ abstract class moodle_database { } else if ($type == SQL_PARAMS_DOLLAR) { if ($target_type & SQL_PARAMS_DOLLAR) { return array($sql, array_values($params), SQL_PARAMS_DOLLAR); // 0-based required - } else { - throw new dml_exception('boundsyntaxnotsupport'); + } else if ($target_type & SQL_PARAMS_QM) { + $sql = preg_replace('/\$[0-9]+/', '?', $sql); + return array($sql, array_values($params), SQL_PARAMS_QM); // 0-based required + } else { //$target_type & SQL_PARAMS_NAMED + $sql = preg_replace('/\$([0-9]+)/', ':param\\1', $sql); + $finalparams = array(); + foreach ($params as $key=>$param) { + $key++; + $finalparams['param'.$key] = $param; + } + return array($sql, $finalparams, SQL_PARAMS_NAMED); } } else { // $type == SQL_PARAMS_QM -- 2.39.5