public function __construct($params) { parent::__construct($params); if (!empty($this->port)) { $this->hostname .= (DIRECTORY_SEPARATOR === '\\' ? ',' : ':') . $this->port; } }
function __construct($params) { parent::__construct($params); // clause and character used for LIKE escape sequences if (strpos($this->hostname, 'mysql') !== FALSE) { $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->hostname .= ";charset={$this->char_set}"; } //Set the charset with the connection options $this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES {$this->char_set}"; } elseif (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 = '!'; } /** * @link http://stackoverflow.com/questions/11054618/codeigniter-pdo-database-driver-not-working */ // empty($this->database) OR $this->hostname .= ';dbname='.$this->database; $this->hostname = 'mysql:dbname=' . $this->database . ';host=' . $this->hostname; $this->trans_enabled = FALSE; $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
function __construct($params) { parent::__construct($params); if (preg_match('/([^;]+):/', $this->dsn, $match) && count($match) == 2) { // If there is a minimum valid dsn string pattern found, we're done // This is for general PDO users, who tend to have a full DSN string. $this->pdodriver = end($match); } else { // Try to build a complete DSN string from params $this->_connect_string($params); } // clause and character used for LIKE escape sequences // this one depends on the driver being used if ($this->pdodriver == 'mysql') { $this->_like_escape_str = ''; $this->_like_escape_chr = ''; } elseif ($this->pdodriver == 'odbc') { $this->_like_escape_str = " {escape '%s'} "; $this->_like_escape_chr = '!'; } else { $this->_like_escape_str = " ESCAPE '%s' "; $this->_like_escape_chr = '!'; } $this->trans_enabled = FALSE; $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
function __construct($params) { parent::__construct($params); // clause and character used for LIKE escape sequences if (strpos($this->hostname, 'mysql') !== FALSE) { $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->hostname .= ";charset={$this->char_set}"; } //Set the charset with the connection options $this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES {$this->char_set}"; } elseif (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 = '!'; } empty($this->database) or $this->hostname .= ';dbname=' . $this->database; $this->trans_enabled = FALSE; $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
/** * Class constructor * * @param array $params * @return void */ public function __construct($params) { parent::__construct($params); if (!empty($this->port)) { $this->hostname .= ':' . $this->port; } }
public function __construct($params) { parent::__construct($params); $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword // Legacy support for DSN in the hostname field if (empty($this->dsn)) { $this->dsn = $this->hostname; } }
function SelectWhere($table, $wherefield, $wherevalue) { $this->db->where($wherefield, $wherevalue); $query = $this->db->get($table); $results = array(); foreach ($query->result() as $row) { $results[] = (array)$row; } return $results; }
/** * Class constructor * * @param array $params * @return void */ public function __construct($params) { parent::__construct($params); if (preg_match('/^CUBRID:[^:]+(:[0-9][1-9]{0,4})?:[^:]+:[^:]*:[^:]*:(\\?.+)?$/', $this->dsn, $matches)) { if (stripos($matches[2], 'autocommit=off') !== FALSE) { $this->auto_commit = FALSE; } } else { // If no port is defined by the user, use the default value empty($this->port) or $this->port = 33000; } }
public function __construct($params) { parent::__construct($params); $valid_dsns = array('tns' => '/^\\(DESCRIPTION=(\\(.+\\)){2,}\\)$/', 'ec' => '/^(\\/\\/)?[a-z0-9.:_-]+(:[1-9][0-9]{0,4})?(\\/[a-z0-9$_]+)?(:[^\\/])?(\\/[a-z0-9$_]+)?$/i', 'in' => '/^[a-z0-9$_]+$/i'); /* Space characters don't have any effect when actually * connecting, but can be a hassle while validating the DSN. */ $this->dsn = str_replace(array("\n", "\r", "\t", ' '), '', $this->dsn); if ($this->dsn !== '') { foreach ($valid_dsns as $regexp) { if (preg_match($regexp, $this->dsn)) { return; } } } // Legacy support for TNS in the hostname configuration field $this->hostname = str_replace(array("\n", "\r", "\t", ' '), '', $this->hostname); if (preg_match($valid_dsns['tns'], $this->hostname)) { $this->dsn = $this->hostname; return; } elseif ($this->hostname !== '' && strpos($this->hostname, '/') === FALSE && strpos($this->hostname, ':') === FALSE && (!empty($this->port) && ctype_digit($this->port) or $this->database !== '')) { /* If the hostname field isn't empty, doesn't contain * ':' and/or '/' and if port and/or database aren't * empty, then the hostname field is most likely indeed * just a hostname. Therefore we'll try and build an * Easy Connect string from these 3 settings, assuming * that the database field is a service name. */ $this->dsn = $this->hostname . (!empty($this->port) && ctype_digit($this->port) ? ':' . $this->port : '') . ($this->database !== '' ? '/' . ltrim($this->database, '/') : ''); if (preg_match($valid_dsns['ec'], $this->dsn)) { return; } } /* At this point, we can only try and validate the hostname and * database fields separately as DSNs. */ if (preg_match($valid_dsns['ec'], $this->hostname) or preg_match($valid_dsns['in'], $this->hostname)) { $this->dsn = $this->hostname; return; } $this->database = str_replace(array("\n", "\r", "\t", ' '), '', $this->database); foreach ($valid_dsns as $regexp) { if (preg_match($regexp, $this->database)) { return; } } /* Well - OK, an empty string should work as well. * PHP will try to use environment variables to * determine which Oracle instance to connect to. */ $this->dsn = ''; }
function CI_DB_oci10_driver($params) { $this->clean(); if (defined('SQLT_RSET')) { $this->_iCursorType = SQLT_RSET; } else { $this->_iCursorType = OCI_B_CURSOR; } if (defined('SQLT_NTY')) { $this->_iCollectionType = SQLT_NTY; } else { $this->_iCollectionType = OCI_B_NTY; } if (defined('SQLT_CHR')) { $this->_iDefaultType = SQLT_CHR; } else { $this->_iDefaultType = 1; } parent::CI_DB_driver($params); }
function __construct($params) { parent::__construct($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; $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
/** * Database version number * * @return string */ public function version() { if (isset($this->data_cache['version'])) { return $this->data_cache['version']; } // Not all subdrivers support the getAttribute() method try { return $this->data_cache['version'] = $this->conn_id->getAttribute(PDO::ATTR_SERVER_VERSION); } catch (PDOException $e) { return parent::version(); } }
/** * Insert batch statement * * Generates a platform-specific insert string from the supplied data. * * @param string $table Table name * @param array $keys INSERT keys * @param array $values INSERT values * @return string|bool */ protected function _insert_batch($table, $keys, $values) { // Multiple-value inserts are only supported as of SQL Server 2008 if (version_compare($this->version(), '10', '>=')) { return parent::_insert_batch($table, $keys, $values); } return $this->db->db_debug ? $this->db->display_error('db_unsupported_feature') : FALSE; }
public function __construct($params) { parent::__construct($params); $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
function CI_DB_odbc_driver($params) { parent::CI_DB($params); $this->_random_keyword = ' RND(' . time() . ')'; // database specific random keyword }
function __construct($params) { parent::__construct($params); $this->_random_keyword = ' RND(' . Startup::getRequestTime() . ')'; // database specific random keyword }
/** * Constructor * */ function CI_DB_sqlrelay_driver($params) { // function __construct() { $this->clean(); $this->setIsOracle(false); $this->_iPrefetch = 1000; if (isset($params['getNullsAsNulls']) && true === $params['getNullsAsNulls']) { $this->_bgetNullsAsNulls = true; } parent::CI_DB_driver($params); //$this->setAutoCommitOn(); }
/** * Replace statement * * Generates a platform-specific replace string from the supplied data * * @param string $table Table name * @param array $keys INSERT keys * @param array $values INSERT values * @return string */ protected function _replace($table, $keys, $values) { return 'INSERT OR ' . parent::_replace($table, $keys, $values); }
/** * "Smart" Escape String * * Escapes data based on type * Sets boolean and null types * * @param string * @return mixed */ public function escape($str) { if (is_bool($str)) { return $str ? 'TRUE' : 'FALSE'; } return parent::escape($str); }
/** * Database version number * * @return string */ public function version() { if (isset($this->data_cache['version'])) { return $this->data_cache['version']; } if (($pg_version = pg_version($this->conn_id)) === FALSE) { return FALSE; } /* If PHP was compiled with PostgreSQL lib versions earlier * than 7.4, pg_version() won't return the server version * and so we'll have to fall back to running a query in * order to get it. */ return isset($pg_version['server']) ? $this->data_cache['version'] = $pg_version['server'] : parent::version(); }
/** * Delete statement * * Generates a platform-specific delete string from the supplied data * * @access public * @param string the table name * @param array the where clause * @param string the limit clause * @return string */ function _delete($table) { if ($this->qb_limit) { return 'WITH ci_delete AS (SELECT TOP ' . $this->qb_limit . ' * FROM ' . $table . $this->_compile_wh('qb_where') . ') DELETE FROM ci_delete'; } return parent::_delete($table); }
/** * 以資料庫記錄Log * * 20140511 注意,資料庫中的log資料表欄位需要新增「action_key」 * * log資料表的建置SQL如下: * * * @param CI_DB $db * @param String|Int $action 如果是用string,則會記錄在資料庫的 action_key * @param Object $data */ function kals_log($db, $action, $data = array()) { $url = get_referer_url(FALSE); $webpage_id = NULL; if ($url !== FALSE) { /* $CI =& get_instance(); if (isset($CI->webpage) == FALSE || is_null($CI->webpage)) $CI->load->library('kals_resource/Webpage'); $webpage_id = $CI->webpage->filter_webpage_id($url); */ $webpage_id = get_context_webpage()->get_id(); } $user_id = NULL; $note = NULL; if (is_array($data) && (isset($data['user_id']) || isset($data['memo']))) { if (isset($data['user_id'])) { $user_id = $data['user_id']; } if (isset($data['memo'])) { $note = $data['memo']; if (is_array($note) || is_object($note)) { $note = json_encode($note); } if ($note === '') { $note = NULL; } } } else { if (defined("JSON_UNESCAPED_UNICODE")) { $note = json_encode($data, JSON_UNESCAPED_UNICODE); } else { $note = kals_json_encode($data); } } if (is_null($user_id)) { $user = get_context_user(); if (isset($user)) { $user_id = $user->get_id(); } } $CI =& get_instance(); $action_key_mapper = $CI->config->item("log.action_key_mapper"); // 根據action的類型,修改action資料 $action_id = null; $action_key = null; if (is_int($action) || strval(intval($action)) === $action) { $action_id = $action; if (array_key_exists($action_id, $action_key_mapper)) { $action_key = $action_key_mapper[$action_id]; } } else { $action_key = $action; } $db->insert('log', array('webpage_id' => $webpage_id, 'user_id' => $user_id, 'user_ip' => get_client_ip(), 'action' => $action_id, 'action_key' => $action_key, 'note' => $note)); }
/** * Delete statement * * Generates a platform-specific delete string from the supplied data * * @param string $table * @return string */ protected function _delete($table) { $this->qb_limit = FALSE; return parent::_delete($table); }
public function __construct($params) { parent::__construct($params); $this->connection_string(); }
/** * Delete statement * * Generates a platform-specific delete string from the supplied data * * @param string $table * @return string */ protected function _delete($table) { if ($this->qb_limit) { $this->where('rownum <= ', $this->qb_limit, FALSE); $this->qb_limit = FALSE; } return parent::_delete($table); }
function __construct($params) { parent::__construct($params); if (strpos($this->hostname, 'mysql') !== FALSE) { $this->_like_escape_str = ''; $this->_like_escape_chr = ''; if (is_php('5.3.6')) { $this->hostname .= ";charset={$this->char_set}"; } $this->options['PDO::MYSQL_ATTR_INIT_COMMAND'] = "SET NAMES {$this->char_set}"; } elseif (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 = '!'; } empty($this->database) or $this->hostname .= ';dbname=' . $this->database; $this->trans_enabled = FALSE; $this->_random_keyword = ' RND(' . time() . ')'; }