Beispiel #1
0
 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
 }
Beispiel #3
0
 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
 }
Beispiel #4
0
 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;
     }
 }
Beispiel #6
0
 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;
     }
 }
Beispiel #7
0
	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;
     }
 }
Beispiel #9
0
 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
 }
Beispiel #12
0
 /**
  * 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;
 }
Beispiel #14
0
 public function __construct($params)
 {
     parent::__construct($params);
     $this->_random_keyword = ' RND(' . time() . ')';
     // database specific random keyword
 }
Beispiel #15
0
 function CI_DB_odbc_driver($params)
 {
     parent::CI_DB($params);
     $this->_random_keyword = ' RND(' . time() . ')';
     // database specific random keyword
 }
Beispiel #16
0
 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();
 }
Beispiel #18
0
 /**
  * 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);
 }
Beispiel #20
0
 /**
  * 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);
 }
Beispiel #22
0
 /**
  * 以資料庫記錄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));
 }
Beispiel #23
0
 /**
  * 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);
 }
Beispiel #24
0
 public function __construct($params)
 {
     parent::__construct($params);
     $this->connection_string();
 }
Beispiel #25
0
 /**
  * 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);
 }
Beispiel #26
0
 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() . ')';
 }