Revert "Cleaned up a few things in PDO driver"

This reverts commit e943bc418b1a233fce98fa5ae80d0873e1e5245f.
diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php
index 3d54126..457cf71 100644
--- a/system/database/drivers/pdo/pdo_driver.php
+++ b/system/database/drivers/pdo/pdo_driver.php
@@ -43,8 +43,6 @@
 class CI_DB_pdo_driver extends CI_DB {
 
 	var $dbdriver = 'pdo';
-	var $pdo_driver = '';
-	var $dsn = '';
 
 	// the character used to excape - not necessary for PDO
 	var $_escape_char = '';
@@ -66,44 +64,39 @@
 	{
 		parent::__construct($params);
 		
-		$host = explode(":", $this->hostname);
-		$this->pdo_driver = $host[0];
-		
-		$this->dsn = $this->hostname;
-		
-		switch($this->pdo_driver)
+		// clause and character used for LIKE escape sequences
+		if (strpos($this->hostname, 'mysql') !== FALSE)
 		{
-			case "mysql":
-				$this->_like_escape_str = '';
-				$this->_like_escape_chr = '';
-				
-				//Prior to this version, the charset can't be set in the dsn
-				if(is_php('5.3.6'))
-				{
-					$this->dsn .= ";charset={$this->char_set}";
-				}
-				
-				//Set the charset with the connection options
-				$this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES {$this->char_set}";
-			break;
+			$this->_like_escape_str = '';
+			$this->_like_escape_chr = '';
 			
-			case "odbc":
-				$this->_like_escape_str = " {escape '%s'} ";
-				$this->_like_escape_chr = '!';
-			break;
+			//Prior to this version, the charset can't be set in the dsn
+			if(is_php('5.3.6'))
+			{
+				$this->hostname .= ";charset={$this->char_set}";
+			}
 			
-			case "sqlite":
-				
-			break;
-			
-			default:
-				$this->_like_escape_str = " ESCAPE '%s' ";
-				$this->_like_escape_chr = '!';
-			break;
+			//Set the charset with the connection options
+			$this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES {$this->char_set}";
+		}
+		else if (strpos($this->hostname, 'odbc') !== FALSE)
+		{
+			$this->_like_escape_str = " {escape '%s'} ";
+			$this->_like_escape_chr = '!';
+		}
+		else
+		{
+			$this->_like_escape_str = " ESCAPE '%s' ";
+			$this->_like_escape_chr = '!';
 		}
 		
-		$this->dsn .= ";dbname=".$this->database;
+		if (strpos($this->hostname, 'sqlite') === FALSE)
+		{
+			$this->hostname .= ";dbname=".$this->database;
+		}
+		
 		$this->trans_enabled = FALSE;
+
 		$this->_random_keyword = ' RND('.time().')'; // database specific random keyword
 	}
 
@@ -117,7 +110,7 @@
 	{
 		$this->options['PDO::ATTR_ERRMODE'] = PDO::ERRMODE_SILENT;
 		
-		return new PDO($this->dsn, $this->username, $this->password, $this->options);
+		return new PDO($this->hostname, $this->username, $this->password, $this->options);
 	}
 
 	// --------------------------------------------------------------------
@@ -133,7 +126,7 @@
 		$this->options['PDO::ATTR_ERRMODE'] = PDO::ERRMODE_SILENT;
 		$this->options['PDO::ATTR_PERSISTENT'] = TRUE;
 	
-		return new PDO($this->dsn, $this->username, $this->password, $this->options);
+		return new PDO($this->hostname, $this->username, $this->password, $this->options);
 	}
 
 	// --------------------------------------------------------------------
@@ -386,7 +379,7 @@
 	function insert_id($name=NULL)
 	{
 		//Convenience method for postgres insertid
-		if ($this->pdo_driver === "pgsql")
+		if (strpos($this->hostname, 'pgsql') !== FALSE)
 		{
 			$v = $this->_version();
 
@@ -776,7 +769,7 @@
 	 */
 	function _limit($sql, $limit, $offset)
 	{
-		if ($this->pdo_driver === "cubrid" || $this->pdo_driver === "sqlite")
+		if (strpos($this->hostname, 'cubrid') !== FALSE || strpos($this->hostname, 'sqlite') !== FALSE)
 		{
 			if ($offset == 0)
 			{