See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401] [Versions 401 and 402] [Versions 401 and 403]
Native sqlsrv class representing moodle database interface.
Copyright: | 2009 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} |
License: | http://www.gnu.org/copyleft/gpl.html GNU GPL v2 or later |
File Size: | 1666 lines (64 kb) |
Included or required: | 0 times |
Referenced: | 0 times |
Includes or requires: | 3 files lib/dml/moodle_database.php lib/dml/sqlsrv_native_moodle_recordset.php lib/dml/sqlsrv_native_moodle_temptables.php |
sqlsrv_native_moodle_database:: (67 methods):
__construct()
driver_installed()
get_dbfamily()
get_dbtype()
get_dblibrary()
get_name()
get_configuration_help()
diagnose()
connect()
dispose()
query_start()
query_end()
get_server_info()
fix_table_names()
allowed_param_types()
get_last_error()
do_query()
get_tables()
get_indexes()
fetch_columns()
normalise_value()
free_result()
sqlsrvtype2moodletype()
change_database_structure()
build_native_bound_params()
emulate_bound_params()
execute()
has_query_order_by()
get_recordset_sql()
add_no_lock_to_temp_tables()
create_recordset()
recordset_closed()
get_records_sql()
get_fieldset_sql()
insert_record_raw()
sqlsrv_fetch_id()
sqlsrv_fetchrow()
insert_record()
import_record()
update_record_raw()
update_record()
set_field_select()
delete_records_select()
sql_cast_to_char()
sql_cast_char2int()
sql_cast_char2real()
sql_ceil()
get_collation()
sql_equal()
sql_like()
sql_like_escape()
sql_concat()
sql_concat_join()
sql_group_concat()
sql_isempty()
sql_length()
sql_order_by_text()
sql_position()
sql_substr()
replace_all_text_supported()
session_lock_supported()
get_session_lock()
release_session_lock()
begin_transaction()
commit_transaction()
rollback_transaction()
is_fulltext_search_supported()
Class: sqlsrv_native_moodle_database - X-Ref
Native sqlsrv class representing moodle database interface.__construct($external=false) X-Ref |
Constructor - instantiates the database, specifying if it's external (connect to other systems) or no (Moodle DB) note this has effect to decide if prefix checks must be performed or no param: bool true means external database used |
driver_installed() X-Ref |
Detects if all needed PHP stuff installed. Note: can be used before connect() return: mixed true if ok, string if something |
get_dbfamily() X-Ref |
Returns database family type - describes SQL dialect Note: can be used before connect() return: string db family name (mysql, postgres, mssql, sqlsrv, oracle, etc.) |
get_dbtype() X-Ref |
Returns more specific database driver type Note: can be used before connect() return: string db type mysqli, pgsql, oci, mssql, sqlsrv |
get_dblibrary() X-Ref |
Returns general database library name Note: can be used before connect() return: string db type pdo, native |
get_name() X-Ref |
Returns localised database type name Note: can be used before connect() return: string |
get_configuration_help() X-Ref |
Returns localised database configuration help. Note: can be used before connect() return: string |
diagnose() X-Ref |
Diagnose database and tables, this function is used to verify database and driver settings, db engine types, etc. return: string null means everything ok, string means problem found. |
connect($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null) X-Ref |
Connect to db Must be called before most other methods. (you can call methods that return connection configuration parameters) param: string $dbhost The database host. param: string $dbuser The database username. param: string $dbpass The database username's password. param: string $dbname The name of the database being connected to. param: mixed $prefix string|bool The moodle db table name's prefix. false is used for external databases where prefix not used param: array $dboptions driver specific options return: bool true |
dispose() X-Ref |
Close database connection and release all resources and memory (especially circular memory references). Do NOT use connect() again, create a new instance if needed. |
query_start($sql, ?array $params, $type, $extrainfo = null) X-Ref |
Called before each db query. param: string $sql param: array|null $params An array of parameters. param: int $type type of query param: mixed $extrainfo driver specific extra information return: void |
query_end($result) X-Ref |
Called immediately after each db query. param: mixed db specific result return: void |
get_server_info() X-Ref |
Returns database server info array return: array Array containing 'description', 'version' and 'database' (current db) info |
fix_table_names($sql) X-Ref |
Override: Converts short table name {tablename} to real table name supporting temp tables (#) if detected param: string sql return: string sql |
allowed_param_types() X-Ref |
Returns supported query parameter types return: int bitmask |
get_last_error() X-Ref |
Returns last error reported by database engine. return: string error message |
do_query($sql, $params, $sql_query_type, $free_result = true, $scrollable = false) X-Ref |
Prepare the query binding and do the actual query. param: string $sql The sql statement param: array $params array of params for binding. If NULL, they are ignored. param: int $sql_query_type - Type of operation param: bool $free_result - Default true, transaction query will be freed. param: bool $scrollable - Default false, to use for quickly seeking to target records return: resource|bool result |
get_tables($usecache = true) X-Ref |
Return tables in database WITHOUT current prefix. param: bool $usecache if true, returns list of cached tables. return: array of table names in lowercase and without prefix |
get_indexes($table) X-Ref |
Return table indexes - everything lowercased. param: string $table The table we want to get indexes from. return: array of arrays |
fetch_columns(string $table) X-Ref |
Returns detailed information about columns in table. param: string $table name return: array array of database_column_info objects indexed with column names |
normalise_value($column, $value) X-Ref |
Normalise values based in RDBMS dependencies (booleans, LOBs...) param: database_column_info $column column metadata corresponding with the value we are going to normalise param: mixed $value value we are going to normalise return: mixed the normalised value |
free_result($resource) X-Ref |
Selectively call sqlsrv_free_stmt(), avoiding some warnings without using the horrible @ param: sqlsrv_resource $resource resource to be freed if possible return: bool |
sqlsrvtype2moodletype($sqlsrv_type) X-Ref |
Provides mapping between sqlsrv native data types and moodle_database - database_column_info - ones) param: string $sqlsrv_type native sqlsrv data type return: string 1-char database_column_info data type |
change_database_structure($sql, $tablenames = null) X-Ref |
Do NOT use in code, to be used by database_manager only! param: string|array $sql query param: array|null $tablenames an array of xmldb table names affected by this request. return: bool true |
build_native_bound_params(array $params = null) X-Ref |
Prepare the array of params for native binding |
emulate_bound_params($sql, array $params = null) X-Ref |
Workaround for SQL*Server Native driver similar to MSSQL driver for consistent behavior. |
execute($sql, array $params = null) X-Ref |
Execute general sql query. Should be used only when no other method suitable. Do NOT use this to make changes in db structure, use database_manager methods instead! param: string $sql query param: array $params query parameters return: bool true |
has_query_order_by(string $sql) X-Ref |
Whether the given SQL statement has the ORDER BY clause in the main query. param: string $sql the SQL statement return: bool true if the main query has the ORDER BY clause; otherwise, false. |
get_recordset_sql($sql, array $params = null, $limitfrom = 0, $limitnum = 0) X-Ref |
Get a number of records as a moodle_recordset using a SQL statement. Since this method is a little less readable, use of it should be restricted to code where it's possible there might be large datasets being returned. For known small datasets use get_records_sql - it leads to simpler code. The return type is like: param: string $sql the SQL select query to execute. param: array $params array of sql parameters param: int $limitfrom return a subset of records, starting at this point (optional, required if $limitnum is set). param: int $limitnum return a subset comprising this many records (optional, required if $limitfrom is set). return: moodle_recordset instance |
add_no_lock_to_temp_tables($sql) X-Ref |
Use NOLOCK on any temp tables. Since it's a temp table and uncommitted reads are low risk anyway. param: string $sql the SQL select query to execute. return: string The SQL, with WITH (NOLOCK) added to all temp tables |
create_recordset($result) X-Ref |
Create a record set and initialize with first row param: mixed $result return: sqlsrv_native_moodle_recordset |
recordset_closed(sqlsrv_native_moodle_recordset $rs) X-Ref |
Do not use outside of recordset class. param: sqlsrv_native_moodle_recordset $rs |
get_records_sql($sql, array $params = null, $limitfrom = 0, $limitnum = 0) X-Ref |
Get a number of records as an array of objects using a SQL statement. Return value is like: param: string $sql the SQL select query to execute. The first column of this SELECT statement param: array $params array of sql parameters param: int $limitfrom return a subset of records, starting at this point (optional, required if $limitnum is set). param: int $limitnum return a subset comprising this many records (optional, required if $limitfrom is set). return: array of objects, or empty array if no records were found |
get_fieldset_sql($sql, array $params = null) X-Ref |
Selects records and return values (first field) as an array using a SQL statement. param: string $sql The SQL query param: array $params array of sql parameters return: array of values |
insert_record_raw($table, $params, $returnid=true, $bulk=false, $customsequence=false) X-Ref |
Insert new record into database, as fast as possible, no safety checks, lobs not supported. param: string $table name param: mixed $params data record as object or array param: bool $returnit return it of inserted record param: bool $bulk true means repeated inserts expected param: bool $customsequence true if 'id' included in $params, disables $returnid return: bool|int true or new id |
sqlsrv_fetch_id() X-Ref |
Get the ID of the current action return: mixed ID |
sqlsrv_fetchrow($query_id) X-Ref |
Fetch a single row into an numbered array param: mixed $query_id |
insert_record($table, $dataobject, $returnid = true, $bulk = false) X-Ref |
Insert a record into a table and return the "id" field if required. Some conversions and safety checks are carried out. Lobs are supported. If the return ID isn't required, then this just reports success as true/false. $data is an object containing needed data param: string $table The database table to be inserted into param: object|array $dataobject A data object with values for one or more fields in the record param: bool $returnid Should the id of the newly created record entry be returned? If this option is not requested then true/false is returned. return: bool|int true or new id |
import_record($table, $dataobject) X-Ref |
Import a record into a table, id field is required. Safety checks are NOT carried out. Lobs are supported. param: string $table name of database table to be inserted into param: object $dataobject A data object with values for one or more fields in the record return: bool true |
update_record_raw($table, $params, $bulk = false) X-Ref |
Update record in database, as fast as possible, no safety checks, lobs not supported. param: string $table name param: mixed $params data record as object or array param: bool true means repeated updates expected return: bool true |
update_record($table, $dataobject, $bulk = false) X-Ref |
Update a record in a table $dataobject is an object containing needed data Relies on $dataobject having a variable "id" to specify the record to update param: string $table The database table to be checked against. param: object $dataobject An object with contents equal to fieldname=>fieldvalue. Must have an entry for 'id' to map to the table specified. param: bool true means repeated updates expected return: bool true |
set_field_select($table, $newfield, $newvalue, $select, array $params = null) X-Ref |
Set a single field in every table record which match a particular WHERE clause. param: string $table The database table to be checked against. param: string $newfield the field to set. param: string $newvalue the value to set the field to. param: string $select A fragment of SQL to be used in a where clause in the SQL call. param: array $params array of sql parameters return: bool true |
delete_records_select($table, $select, array $params = null) X-Ref |
Delete one or more records from a table which match a particular WHERE clause. param: string $table The database table to be checked against. param: string $select A fragment of SQL to be used in a where clause in the SQL call (used to define the selection criteria). param: array $params array of sql parameters return: bool true |
sql_cast_to_char(string $field) X-Ref |
Return SQL for casting to char of given field/expression param: string $field Table field or SQL expression to be cast return: string |
sql_cast_char2int($fieldname, $text = false) X-Ref |
No description |
sql_cast_char2real($fieldname, $text=false) X-Ref |
No description |
sql_ceil($fieldname) X-Ref |
No description |
get_collation() X-Ref |
No description |
sql_equal($fieldname, $param, $casesensitive = true, $accentsensitive = true, $notequal = false) X-Ref |
No description |
sql_like($fieldname, $param, $casesensitive = true, $accentsensitive = true, $notlike = false, $escapechar = '\\') X-Ref |
Returns 'LIKE' part of a query. param: string $fieldname usually name of the table column param: string $param usually bound query parameter (?, :named) param: bool $casesensitive use case sensitive search param: bool $accensensitive use accent sensitive search (not all databases support accent insensitive) param: bool $notlike true means "NOT LIKE" param: string $escapechar escape char for '%' and '_' return: string SQL code fragment |
sql_like_escape($text, $escapechar = '\\') X-Ref |
Escape common SQL LIKE special characters like '_' or '%', plus '[' & ']' which are also supported in SQL Server Note that '^' and '-' also have meaning within a LIKE, but only when enclosed within square brackets. As this syntax is not supported on all databases and the brackets are always escaped, we don't need special handling of them param: string $text param: string $escapechar return: string |
sql_concat() X-Ref |
No description |
sql_concat_join($separator = "' '", $elements = array () X-Ref |
No description |
sql_group_concat(string $field, string $separator = ', ', string $sort = '') X-Ref |
Return SQL for performing group concatenation on given field/expression param: string $field param: string $separator param: string $sort return: string |
sql_isempty($tablename, $fieldname, $nullablefield, $textfield) X-Ref |
No description |
sql_length($fieldname) X-Ref |
Returns the SQL text to be used to calculate the length in characters of one expression. param: string fieldname or expression to calculate its length in characters. return: string the piece of SQL code to be used in the statement. |
sql_order_by_text($fieldname, $numchars = 32) X-Ref |
No description |
sql_position($needle, $haystack) X-Ref |
Returns the SQL for returning searching one string for the location of another. |
sql_substr($expr, $start, $length = false) X-Ref |
Returns the proper substr() SQL text used to extract substrings from DB NOTE: this was originally returning only function name param: string $expr some string field, no aggregates param: mixed $start integer or expression evaluating to int param: mixed $length optional integer or expression evaluating to int return: string sql fragment |
replace_all_text_supported() X-Ref |
Does this driver support tool_replace? return: bool |
session_lock_supported() X-Ref |
No description |
get_session_lock($rowid, $timeout) X-Ref |
Obtain session lock param: int $rowid id of the row with session record param: int $timeout max allowed time to wait for the lock in seconds return: void |
release_session_lock($rowid) X-Ref |
No description |
begin_transaction() X-Ref |
Driver specific start of real database transaction, this can not be used directly in code. return: void |
commit_transaction() X-Ref |
Driver specific commit of real database transaction, this can not be used directly in code. return: void |
rollback_transaction() X-Ref |
Driver specific abort of real database transaction, this can not be used directly in code. return: void |
is_fulltext_search_supported() X-Ref |
Is fulltext search enabled?. return: bool |