Skip to content

CI_DB_sqlsrv_driver

Mathieu Nayrolles edited this page Jan 20, 2016 · 1 revision

CI_DB_sqlsrv_driver

SQLSRV Database Adapter Class

Note: _DB is an extender class that the app controller creates dynamically based on whether the query builder class is being used or not.

  • Class name: CI_DB_sqlsrv_driver
  • Namespace:
  • Parent class: CI_DB

Properties

$dbdriver

public string $dbdriver = 'mysqli'

Database driver

  • Visibility: public

$scrollable

public mixed $scrollable

Scrollable flag

Determines what cursor type to use when executing queries.

FALSE or SQLSRV_CURSOR_FORWARD would increase performance, but would disable num_rows() (and possibly insert_id())

  • Visibility: public

$_random_keyword

protected array $_random_keyword = array('RAND()', 'RAND(%d)')

ORDER BY random keyword

  • Visibility: protected

$_quoted_identifier

protected boolean $_quoted_identifier = TRUE

Quoted identifier flag

Whether to use SQL-92 standard quoted identifier (double quotes) or brackets for identifier escaping.

  • Visibility: protected

$dsn

public string $dsn

Data Source Name / Connect string

  • Visibility: public

$username

public string $username

Username

  • Visibility: public

$password

public string $password

Password

  • Visibility: public

$hostname

public string $hostname

Hostname

  • Visibility: public

$database

public string $database

Database name

  • Visibility: public

$subdriver

public string $subdriver

Sub-driver

  • Visibility: public

$dbprefix

public string $dbprefix = ''

Table prefix

  • Visibility: public

$char_set

public string $char_set = 'utf8'

Character set

  • Visibility: public

$dbcollat

public string $dbcollat = 'utf8_general_ci'

Collation

  • Visibility: public

$encrypt

public mixed $encrypt = FALSE

Encryption flag/data

  • Visibility: public

$swap_pre

public string $swap_pre = ''

Swap Prefix

  • Visibility: public

$port

public integer $port = ''

Database port

  • Visibility: public

$pconnect

public boolean $pconnect = FALSE

Persistent connection flag

  • Visibility: public

$conn_id

public object $conn_id = FALSE

Connection ID

  • Visibility: public

$result_id

public object $result_id = FALSE

Result ID

  • Visibility: public

$db_debug

public boolean $db_debug = FALSE

Debug flag

Whether to display error messages.

  • Visibility: public

$benchmark

public integer $benchmark

Benchmark time

  • Visibility: public

$query_count

public integer $query_count

Executed queries count

  • Visibility: public

$bind_marker

public string $bind_marker = '?'

Bind marker

Character used to identify values in a prepared statement.

  • Visibility: public

$save_queries

public boolean $save_queries = TRUE

Save queries flag

Whether to keep an in-memory history of queries for debugging purposes.

  • Visibility: public

$queries

public array<mixed,string> $queries = array()

Queries list

  • Visibility: public

$query_times

public array $query_times = array()

Query times

A list of times that queries took to execute.

  • Visibility: public

$data_cache

public array $data_cache = array()

Data cache

An internal generic value cache.

  • Visibility: public

$trans_enabled

public boolean $trans_enabled = TRUE

Transaction enabled flag

  • Visibility: public

$trans_strict

public boolean $trans_strict = TRUE

Strict transaction mode flag

  • Visibility: public

$_trans_depth

protected integer $_trans_depth

Transaction depth level

  • Visibility: protected

$_trans_status

protected boolean $_trans_status = TRUE

Transaction status flag

Used with transactions to determine if a rollback should occur.

  • Visibility: protected

$_trans_failure

protected boolean $_trans_failure = FALSE

Transaction failure flag

Used with transactions to determine if a transaction has failed.

  • Visibility: protected

$cache_on

public boolean $cache_on = FALSE

Cache On flag

  • Visibility: public

$cachedir

public boolean $cachedir = ''

Cache directory path

  • Visibility: public

$cache_autodel

public boolean $cache_autodel = FALSE

Cache auto-delete flag

  • Visibility: public

$CACHE

public object $CACHE

DB Cache object

  • Visibility: public

$_protect_identifiers

protected boolean $_protect_identifiers = TRUE

Protect identifiers flag

  • Visibility: protected

$_reserved_identifiers

protected array<mixed,string> $_reserved_identifiers = array('*')

List of reserved identifiers

Identifiers that must NOT be escaped.

  • Visibility: protected

$_escape_char

protected string $_escape_char = '"'

Identifier escape character

  • Visibility: protected

$_like_escape_str

protected string $_like_escape_str = " ESCAPE '%s' "

ESCAPE statement string

  • Visibility: protected

$_like_escape_chr

protected string $_like_escape_chr = '!'

ESCAPE character

  • Visibility: protected

$_count_string

protected string $_count_string = 'SELECT COUNT(*) AS '

COUNT string

  • Visibility: protected

Methods

__construct

void CI_DB_sqlsrv_driver::__construct(array $params)

Class constructor

  • Visibility: public

Arguments

  • $params array

db_connect

mixed CI_DB_sqlsrv_driver::db_connect()

DB connect

This is just a dummy method that all drivers will override.

  • Visibility: public

db_select

boolean CI_DB_sqlsrv_driver::db_select()

Select database

This is just a dummy method to allow drivers without such functionality to not declare it, while others will override it.

  • Visibility: public

_execute

resource CI_DB_sqlsrv_driver::_execute(string $sql)

Execute the query

  • Visibility: protected

Arguments

  • $sql string - <p>an SQL query</p>

trans_begin

boolean CI_DB_sqlsrv_driver::trans_begin(boolean $test_mode)

Begin Transaction

  • Visibility: public

Arguments

  • $test_mode boolean

trans_commit

boolean CI_DB_sqlsrv_driver::trans_commit()

Commit Transaction

  • Visibility: public

trans_rollback

boolean CI_DB_sqlsrv_driver::trans_rollback()

Rollback Transaction

  • Visibility: public

affected_rows

integer CI_DB_sqlsrv_driver::affected_rows()

Affected Rows

  • Visibility: public

insert_id

string CI_DB_sqlsrv_driver::insert_id()

Insert ID

Returns the last id created in the Identity column.

  • Visibility: public

version

string CI_DB_sqlsrv_driver::version()

Database version number

Returns a string containing the version of the database being used. Most drivers will override this method.

  • Visibility: public

_list_tables

string CI_DB_sqlsrv_driver::_list_tables($prefix_limit)

List table query

Generates a platform-specific query string so that the table names can be fetched

  • Visibility: protected

Arguments

  • $prefix_limit mixed

_list_columns

string CI_DB_sqlsrv_driver::_list_columns(string $table)

List column query

Generates a platform-specific query string so that the column names can be fetched

  • Visibility: protected

Arguments

  • $table string

field_data

array CI_DB_sqlsrv_driver::field_data(string $table)

Returns an object with field data

  • Visibility: public

Arguments

  • $table string - <p>the table name</p>

error

array CI_DB_sqlsrv_driver::error()

Error

Returns an array containing code and message of the last database error that has occured.

  • Visibility: public

_update

string CI_DB_sqlsrv_driver::_update($table, $values)

Update statement

Generates a platform-specific update string from the supplied data

  • Visibility: protected

Arguments

  • $table mixed
  • $values mixed

_truncate

string CI_DB_sqlsrv_driver::_truncate(string $table)

Truncate statement

Generates a platform-specific truncate string from the supplied data

If the database does not support the TRUNCATE statement, then this method maps to 'DELETE FROM table'

  • Visibility: protected

Arguments

  • $table string

_delete

string CI_DB_sqlsrv_driver::_delete(string $table)

Delete statement

Generates a platform-specific delete string from the supplied data

  • Visibility: protected

Arguments

  • $table string

_limit

string CI_DB_sqlsrv_driver::_limit(string $sql)

LIMIT

Generates a platform-specific LIMIT clause

  • Visibility: protected

Arguments

  • $sql string - <p>SQL Query</p>

_insert_batch

string|boolean CI_DB_sqlsrv_driver::_insert_batch(string $table, array $keys, array $values)

Insert batch statement

Generates a platform-specific insert string from the supplied data.

  • Visibility: protected

Arguments

  • $table string - <p>Table name</p>
  • $keys array - <p>INSERT keys</p>
  • $values array - <p>INSERT values</p>

_close

void CI_DB_sqlsrv_driver::_close()

Close DB Connection

This method would be overridden by most of the drivers.

  • Visibility: protected

initialize

boolean CI_DB_sqlsrv_driver::initialize()

Initialize Database Settings

  • Visibility: public

db_pconnect

mixed CI_DB_sqlsrv_driver::db_pconnect()

Persistent database connection

  • Visibility: public

reconnect

void CI_DB_sqlsrv_driver::reconnect()

Reconnect

Keep / reestablish the db connection if no queries have been sent for a length of time exceeding the server's idle timeout.

This is just a dummy method to allow drivers without such functionality to not declare it, while others will override it.

  • Visibility: public

db_set_charset

boolean CI_DB_sqlsrv_driver::db_set_charset($charset)

Set client character set

  • Visibility: public

Arguments

  • $charset mixed

platform

string CI_DB_sqlsrv_driver::platform()

The name of the platform in use (mysql, mssql, etc.

..)

  • Visibility: public

_version

string CI_DB_sqlsrv_driver::_version()

Version number query string

  • Visibility: protected

query

mixed CI_DB_sqlsrv_driver::query(string $sql, array $binds, boolean $return_object)

Execute the query

Accepts an SQL string as input and returns a result object upon successful execution of a "read" type query. Returns boolean TRUE upon successful execution of a "write" type query. Returns boolean FALSE upon failure, and if the $db_debug variable is set to TRUE will raise an error.

  • Visibility: public

Arguments

  • $sql string
  • $binds array - <p>= FALSE An array of binding data</p>
  • $return_object boolean - <p>= NULL</p>

load_rdriver

string CI_DB_sqlsrv_driver::load_rdriver()

Load the result drivers

  • Visibility: public

simple_query

mixed CI_DB_sqlsrv_driver::simple_query($sql)

Simple Query This is a simplified version of the query() function. Internally we only use it when running transaction commands since they do not require all the features of the main query() function.

  • Visibility: public

Arguments

  • $sql mixed

trans_off

void CI_DB_sqlsrv_driver::trans_off()

Disable Transactions This permits transactions to be disabled at run-time.

  • Visibility: public

trans_strict

void CI_DB_sqlsrv_driver::trans_strict(boolean $mode)

Enable/disable Transaction Strict Mode When strict mode is enabled, if you are running multiple groups of transactions, if one group fails all groups will be rolled back.

If strict mode is disabled, each group is treated autonomously, meaning a failure of one group will not affect any others

  • Visibility: public

Arguments

  • $mode boolean - <p>= TRUE</p>

trans_start

void CI_DB_sqlsrv_driver::trans_start(boolean $test_mode)

Start Transaction

  • Visibility: public

Arguments

  • $test_mode boolean - <p>= FALSE</p>

trans_complete

boolean CI_DB_sqlsrv_driver::trans_complete()

Complete Transaction

  • Visibility: public

trans_status

boolean CI_DB_sqlsrv_driver::trans_status()

Lets you retrieve the transaction flag to determine if it has failed

  • Visibility: public

compile_binds

string CI_DB_sqlsrv_driver::compile_binds($sql, $binds)

Compile Bindings

  • Visibility: public

Arguments

  • $sql mixed
  • $binds mixed

is_write_type

boolean CI_DB_sqlsrv_driver::is_write_type($sql)

Determines if a query is a "write" type.

  • Visibility: public

Arguments

  • $sql mixed

elapsed_time

string CI_DB_sqlsrv_driver::elapsed_time($decimals)

Calculate the aggregate query elapsed time

  • Visibility: public

Arguments

  • $decimals mixed

total_queries

integer CI_DB_sqlsrv_driver::total_queries()

Returns the total number of queries

  • Visibility: public

last_query

string CI_DB_sqlsrv_driver::last_query()

Returns the last query that was executed

  • Visibility: public

escape

mixed CI_DB_sqlsrv_driver::escape($str)

"Smart" Escape String

Escapes data based on type Sets boolean and null types

  • Visibility: public

Arguments

  • $str mixed

escape_str

string CI_DB_sqlsrv_driver::escape_str(string|array<mixed,string> $str, boolean $like)

Escape String

  • Visibility: public

Arguments

  • $str string|array<mixed,string> - <p>Input string</p>
  • $like boolean - <p>Whether or not the string will be used in a LIKE condition</p>

escape_like_str

mixed CI_DB_sqlsrv_driver::escape_like_str($str)

Escape LIKE String

Calls the individual driver for platform specific escaping for LIKE conditions

  • Visibility: public

Arguments

  • $str mixed

_escape_str

string CI_DB_sqlsrv_driver::_escape_str($str)

Platform-dependant string escape

  • Visibility: protected

Arguments

  • $str mixed

primary

string CI_DB_sqlsrv_driver::primary(string $table)

Primary

Retrieves the primary key. It assumes that the row in the first position is the primary key

  • Visibility: public

Arguments

  • $table string - <p>Table name</p>

count_all

integer CI_DB_sqlsrv_driver::count_all($table)

"Count All" query

Generates a platform-specific query string that counts all records in the specified database

  • Visibility: public

Arguments

  • $table mixed

list_tables

array CI_DB_sqlsrv_driver::list_tables(string $constrain_by_prefix)

Returns an array of table names

  • Visibility: public

Arguments

  • $constrain_by_prefix string - <p>= FALSE</p>

table_exists

boolean CI_DB_sqlsrv_driver::table_exists(string $table_name)

Determine if a particular table exists

  • Visibility: public

Arguments

  • $table_name string

list_fields

array CI_DB_sqlsrv_driver::list_fields(string $table)

Fetch Field Names

  • Visibility: public

Arguments

  • $table string - <p>Table name</p>

field_exists

boolean CI_DB_sqlsrv_driver::field_exists($field_name, $table_name)

Determine if a particular field exists

  • Visibility: public

Arguments

  • $field_name mixed
  • $table_name mixed

escape_identifiers

mixed CI_DB_sqlsrv_driver::escape_identifiers($item)

Escape the SQL Identifiers

This function escapes column and table names

  • Visibility: public

Arguments

  • $item mixed

insert_string

string CI_DB_sqlsrv_driver::insert_string($table, $data)

Generate an insert string

  • Visibility: public

Arguments

  • $table mixed
  • $data mixed

_insert

string CI_DB_sqlsrv_driver::_insert($table, $keys, $values)

Insert statement

Generates a platform-specific insert string from the supplied data

  • Visibility: protected

Arguments

  • $table mixed
  • $keys mixed
  • $values mixed

update_string

string CI_DB_sqlsrv_driver::update_string($table, $data, $where)

Generate an update string

  • Visibility: public

Arguments

  • $table mixed
  • $data mixed
  • $where mixed

_has_operator

boolean CI_DB_sqlsrv_driver::_has_operator($str)

Tests whether the string has an SQL operator

  • Visibility: protected

Arguments

  • $str mixed

_get_operator

string CI_DB_sqlsrv_driver::_get_operator($str)

Returns the SQL string operator

  • Visibility: protected

Arguments

  • $str mixed

call_function

mixed CI_DB_sqlsrv_driver::call_function(string $function)

Enables a native PHP function to be run, using a platform agnostic wrapper.

  • Visibility: public

Arguments

  • $function string - <p>Function name</p>

cache_set_path

void CI_DB_sqlsrv_driver::cache_set_path($path)

Set Cache Directory Path

  • Visibility: public

Arguments

  • $path mixed

cache_on

boolean CI_DB_sqlsrv_driver::cache_on()

Enable Query Caching

  • Visibility: public

cache_off

boolean CI_DB_sqlsrv_driver::cache_off()

Disable Query Caching

  • Visibility: public

cache_delete

boolean CI_DB_sqlsrv_driver::cache_delete(string $segment_one, string $segment_two)

Delete the cache files associated with a particular URI

  • Visibility: public

Arguments

  • $segment_one string - <p>= ''</p>
  • $segment_two string - <p>= ''</p>

cache_delete_all

boolean CI_DB_sqlsrv_driver::cache_delete_all()

Delete All cache files

  • Visibility: public

_cache_init

boolean CI_DB_sqlsrv_driver::_cache_init()

Initialize the Cache Class

  • Visibility: protected

close

void CI_DB_sqlsrv_driver::close()

Close DB Connection

  • Visibility: public

display_error

string CI_DB_sqlsrv_driver::display_error($error, $swap, $native)

Display an error message

  • Visibility: public

Arguments

  • $error mixed
  • $swap mixed
  • $native mixed

protect_identifiers

string CI_DB_sqlsrv_driver::protect_identifiers($item, $prefix_single, $protect_identifiers, $field_exists)

Protect Identifiers

This function is used extensively by the Query Builder class, and by a couple functions in this class. It takes a column or table name (optionally with an alias) and inserts the table prefix onto it. Some logic is necessary in order to deal with column names that include the path. Consider a query like this:

SELECT * FROM hostname.database.table.column AS c FROM hostname.database.table

Or a query with aliasing:

SELECT m.member_id, m.member_name FROM members AS m

Since the column name can include up to four segments (host, DB, table, column) or also have an alias prefix, we need to do a bit of work to figure this out and insert the table prefix (if it exists) in the proper position, and escape only the correct identifiers.

  • Visibility: public

Arguments

  • $item mixed
  • $prefix_single mixed
  • $protect_identifiers mixed
  • $field_exists mixed

_reset_select

void CI_DB_sqlsrv_driver::_reset_select()

Dummy method that allows Query Builder class to be disabled and keep count_all() working.

  • Visibility: protected
Clone this wiki locally