From c7ba6640fcd1acfd5865efb5780607c90efc0e24 Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Wed, 14 Sep 2011 12:25:14 -0400 Subject: Fixed LIKE statement escaping issues --- system/database/drivers/pdo/pdo_driver.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'system/database/drivers/pdo/pdo_driver.php') diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php index 5299f1a13..b0bd7075f 100644 --- a/system/database/drivers/pdo/pdo_driver.php +++ b/system/database/drivers/pdo/pdo_driver.php @@ -34,10 +34,9 @@ class CI_DB_pdo_driver extends CI_DB { // the character used to excape - not necessary for PDO var $_escape_char = ''; - - // clause and character used for LIKE escape sequences - var $_like_escape_str = " {escape '%s'} "; - var $_like_escape_chr = '!'; + var $_like_escape_str; + var $_like_escape_chr; + /** * The syntax to count rows is slightly different across different @@ -52,6 +51,23 @@ class CI_DB_pdo_driver extends CI_DB { { parent::CI_DB($params); + // clause and character used for LIKE escape sequences + if(strpos($this->hostname, 'mysql') !== FALSE) + { + $this->_like_escape_str = ''; + $this->_like_escape_chr = ''; + } + 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->hostname = $this->hostname . ";dbname=".$this->database; $this->trans_enabled = FALSE; @@ -306,9 +322,9 @@ class CI_DB_pdo_driver extends CI_DB { */ function affected_rows() { - if ($this->db->db_debug) + if ($this->db_debug) { - return $this->db->display_error('db_unsuported_feature'); + return $this->display_error('db_unsuported_feature'); } return FALSE; } -- cgit v1.2.3-24-g4f1b