]> granicus.if.org Git - php/commitdiff
Added support for passing special backend params in DSN. Ex:
authorTomas V.V.Cox <cox@php.net>
Fri, 1 Feb 2002 15:03:17 +0000 (15:03 +0000)
committerTomas V.V.Cox <cox@php.net>
Fri, 1 Feb 2002 15:03:17 +0000 (15:03 +0000)
ibase://user:pass@localhost/db?role=foo&dialect=bar

pear/DB.php

index 71d0a5ca9bb036337d61240e0bda38ab9f733e43..05c871f7012ce9b23fbbb0e9b2ad1ed5bb2032f5 100644 (file)
@@ -520,7 +520,23 @@ class DB
         // Get dabase if any
         // $dsn => database
         if (!empty($dsn)) {
-            $parsed['database'] = $dsn;
+            // /database
+            if (($pos = strpos($dsn, '?')) === false) {
+                $parsed['database'] = $dsn;
+            // /database?param1=value1&param2=value2
+            } else {
+                $parsed['database'] = substr($dsn, 0, $pos);
+                $dsn = substr($dsn, $pos + 1);
+                if (strpos($dsn, '&') !== false) {
+                    $opts = explode('&', $dsn);
+                } else { // database?param1=value1
+                    $opts = array($dsn);
+                }
+                foreach ($opts as $opt) {
+                    list($key, $value) = explode('=', $opt);
+                    $parsed[$key] = urldecode($value);
+                }
+            }
         }
 
         return $parsed;