diff options
author | Andrey Andreev <narf@bofh.bg> | 2012-02-14 10:27:43 +0100 |
---|---|---|
committer | Andrey Andreev <narf@bofh.bg> | 2012-02-14 10:27:43 +0100 |
commit | c4fcb6ac466173696f765d3c7ca16b823d2cb04e (patch) | |
tree | 0d9af9a2611c1712bbb33a81265b226f96e622aa /system/database/drivers/pdo | |
parent | 75b0e8ef75934a64c5289752d393884230ec8712 (diff) | |
parent | e35d6943d513b4f016b763eebe8b97a9f1c902e3 (diff) |
Merge remote-tracking branch 'upstream/develop' into develop-db-sqlite3
Diffstat (limited to 'system/database/drivers/pdo')
-rw-r--r-- | system/database/drivers/pdo/pdo_driver.php | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php index fc378daeb..de2b0abeb 100644 --- a/system/database/drivers/pdo/pdo_driver.php +++ b/system/database/drivers/pdo/pdo_driver.php @@ -116,8 +116,15 @@ class CI_DB_pdo_driver extends CI_DB { // hostname generally would have this prototype // $db['hostname'] = 'pdodriver:host(/Server(/DSN))=hostname(/DSN);'; // We need to get the prefix (pdodriver used by PDO). - $this->dsn = $this->hostname; - $this->pdodriver = substr($this->hostname, 0, strpos($this->hostname, ':')); + $dsnarray = explode(':', $this->hostname); + $this->pdodriver = $dsnarray[0]; + + // End dsn with a semicolon for extra backward compability + // if database property was not empty. + if ( ! empty($this->database)) + { + $this->dsn .= rtrim($this->hostname, ';').';'; + } } else { @@ -132,7 +139,9 @@ class CI_DB_pdo_driver extends CI_DB { $this->dsn = $this->pdodriver.':'; // Add hostname to the DSN for databases that need it - if ( ! empty($this->hostname) && in_array($this->pdodriver, array('informix', 'mysql', 'pgsql', 'sybase', 'mssql', 'dblib', 'cubrid'))) + if ( ! empty($this->hostname) + && strpos($this->hostname, ':') === FALSE + && in_array($this->pdodriver, array('informix', 'mysql', 'pgsql', 'sybase', 'mssql', 'dblib', 'cubrid'))) { $this->dsn .= 'host='.$this->hostname.';'; } |