Moodle PHP Documentation 4.5
Moodle 4.5dev (Build: 20240606) (d3ae1391abe)
sqlsrv_native_moodle_database Class Reference

Native sqlsrv class representing moodle database interface. More...

Inheritance diagram for sqlsrv_native_moodle_database:
moodle_database

Public Member Functions

 __construct ($external=false)
 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.
 
 change_database_structure ($sql, $tablenames=null)
 Do NOT use in code, to be used by database_manager only!
 
 change_db_encoding ()
 Attempts to change db encoding to UTF-8 encoding if possible.
 
 commit_delegated_transaction (moodle_transaction $transaction)
 Indicates delegated transaction finished successfully.
 
 connect ($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null)
 Connect to db Must be called before most other methods.
 
 count_records ($table, array $conditions=null)
 Count the records in a table where all the given conditions met.
 
 count_records_select ($table, $select, array $params=null, $countitem="COUNT('x')")
 Count the records in a table which match a particular WHERE clause.
 
 count_records_sql ($sql, array $params=null)
 Get the result of a SQL SELECT COUNT(...) query.
 
 create_database ($dbhost, $dbuser, $dbpass, $dbname, array $dboptions=null)
 Attempt to create the database.
 
 delete_records ($table, array $conditions=null)
 Delete the records from a table where all the given conditions met.
 
 delete_records_list ($table, $field, array $values)
 Delete the records from a table where one field match one list of values.
 
 delete_records_select ($table, $select, array $params=null)
 Delete one or more records from a table which match a particular WHERE clause.
 
 delete_records_subquery (string $table, string $field, string $alias, string $subquery, array $params=[])
 Deletes records from a table using a subquery.
 
 diagnose ()
 Diagnose database and tables, this function is used to verify database and driver settings, db engine types, etc.
 
 dispose ()
 Close database connection and release all resources and memory (especially circular memory references).
 
 driver_installed ()
 Detects if all needed PHP stuff installed.
 
 execute ($sql, array $params=null)
 Execute general sql query.
 
 export_dbconfig ()
 Returns the db related part of config.php.
 
 export_table_recordset ($table)
 Get all records from a table.
 
 fix_sql_params ($sql, array $params=null)
 Normalizes sql query parameters and verifies parameters.
 
 force_transaction_rollback ()
 Force rollback of all delegated transaction.
 
 get_columns ($table, $usecache=true)
 Returns detailed information about columns in table.
 
 get_configuration_help ()
 Returns localised database configuration help.
 
 get_configuration_hints ()
 Returns the localised database description Note: can be used before connect()
 
 get_dbfamily ()
 Returns database family type - describes SQL dialect Note: can be used before connect()
 
 get_dbvendor ()
 Returns the database vendor.
 
 get_debug ()
 Returns debug status.
 
 get_field ($table, $return, array $conditions, $strictness=IGNORE_MISSING)
 Get a single field value from a table record where all the given conditions met.
 
 get_field_select ($table, $return, $select, array $params=null, $strictness=IGNORE_MISSING)
 Get a single field value from a table record which match a particular WHERE clause.
 
 get_field_sql ($sql, array $params=null, $strictness=IGNORE_MISSING)
 Get a single field value (first field) using a SQL statement.
 
 get_fieldset (string $table, string $return, ?array $conditions=null)
 Selects records and return values of chosen field as an array where all the given conditions met.
 
 get_fieldset_select ($table, $return, $select, array $params=null)
 Selects records and return values of chosen field as an array which match a particular WHERE clause.
 
 get_fieldset_sql ($sql, array $params=null)
 Selects records and return values (first field) as an array using a SQL statement.
 
 get_in_or_equal ($items, $type=SQL_PARAMS_QM, $prefix='param', $equal=true, $onemptyitems=false)
 Constructs 'IN()' or '=' sql fragment.
 
 get_indexes ($table)
 Return table indexes - everything lowercased.
 
 get_last_error ()
 Returns last error reported by database engine.
 
 get_manager ()
 Returns the sql generator used for db manipulation.
 
 get_name ()
 Returns localised database type name Note: can be used before connect()
 
 get_prefix ()
 Returns database table prefix Note: can be used before connect()
 
 get_record ($table, array $conditions, $fields=' *', $strictness=IGNORE_MISSING)
 Get a single database record as an object where all the given conditions met.
 
 get_record_select ($table, $select, array $params=null, $fields=' *', $strictness=IGNORE_MISSING)
 Get a single database record as an object which match a particular WHERE clause.
 
 get_record_sql ($sql, array $params=null, $strictness=IGNORE_MISSING)
 Get a single database record as an object using a SQL statement.
 
 get_records ($table, array $conditions=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as an array of objects where all the given conditions met.
 
 get_records_list ($table, $field, array $values, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as an array of objects where one field match one list of values.
 
 get_records_menu ($table, array $conditions=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get the first two columns from a number of records as an associative array where all the given conditions met.
 
 get_records_select ($table, $select, array $params=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as an array of objects which match a particular WHERE clause.
 
 get_records_select_menu ($table, $select, array $params=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get the first two columns from a number of records as an associative array which match a particular WHERE clause.
 
 get_records_sql ($sql, array $params=null, $limitfrom=0, $limitnum=0)
 Get a number of records as an array of objects using a SQL statement.
 
 get_records_sql_menu ($sql, array $params=null, $limitfrom=0, $limitnum=0)
 Get the first two columns from a number of records as an associative array using a SQL statement.
 
 get_recordset ($table, array $conditions=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as a moodle_recordset where all the given conditions met.
 
 get_recordset_list ($table, $field, array $values, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as a moodle_recordset where one field match one list of values.
 
 get_recordset_select ($table, $select, array $params=null, $sort='', $fields=' *', $limitfrom=0, $limitnum=0)
 Get a number of records as a moodle_recordset which match a particular WHERE clause.
 
 get_recordset_sql ($sql, array $params=null, $limitfrom=0, $limitnum=0)
 Get a number of records as a moodle_recordset using a SQL statement.
 
 get_server_info ()
 Returns database server info array.
 
 get_session_lock ($rowid, $timeout)
 Obtain session lock.
 
 get_tables ($usecache=true)
 Return tables in database WITHOUT current prefix.
 
 get_transaction_start_backtrace ()
 Returns transaction trace for debugging purposes.
 
 import_record ($table, $dataobject)
 Import a record into a table, id field is required.
 
 insert_record ($table, $dataobject, $returnid=true, $bulk=false)
 Insert a record into a table and return the "id" field if required.
 
 insert_record_raw ($table, $params, $returnid=true, $bulk=false, $customsequence=false)
 Insert new record into database, as fast as possible, no safety checks, lobs not supported.
 
 insert_records ($table, $dataobjects)
 Insert multiple records into database as fast as possible.
 
 is_fulltext_search_supported ()
 Is fulltext search enabled?.
 
 is_transaction_started ()
 Returns true if a transaction is in progress.
 
 perf_get_queries ()
 Returns the number of queries done by this database.
 
 perf_get_queries_time ()
 Time waiting for the database engine to finish running all queries.
 
 perf_get_reads ()
 Returns the number of reads done by this database.
 
 perf_get_reads_slave ()
 Returns the number of reads before first write done by this database.
 
 perf_get_writes ()
 Returns the number of writes done by this database.
 
 query_log ($error=false)
 This logs the last query based on 'logall', 'logslow' and 'logerrors' options configured via $CFG->dboptions .
 
 record_exists ($table, array $conditions)
 Test whether a record exists in a table where all the given conditions met.
 
 record_exists_select ($table, $select, array $params=null)
 Test whether any records exists in a table which match a particular WHERE clause.
 
 record_exists_sql ($sql, array $params=null)
 Test whether a SQL SELECT statement returns any records.
 
 recordset_closed (sqlsrv_native_moodle_recordset $rs)
 Do not use outside of recordset class.
 
 release_session_lock ($rowid)
 Releases the session lock.
 
 replace_all_text ($table, database_column_info $column, $search, $replace)
 Replace given text in all rows of column.
 
 replace_all_text_supported ()
 Does this driver support tool_replace?
 
 reset_caches ($tablenames=null)
 Resets the internal column details cache.
 
 rollback_delegated_transaction (moodle_transaction $transaction, $e)
 Call when delegated transaction failed, this rolls back all delegated transactions up to the top most level.
 
 session_lock_supported ()
 Is session lock supported in this driver?
 
 set_debug ($state)
 Enable/disable very detailed debugging.
 
 set_field ($table, $newfield, $newvalue, array $conditions=null)
 Set a single field in every table record where all the given conditions met.
 
 set_field_select ($table, $newfield, $newvalue, $select, array $params=null)
 Set a single field in every table record which match a particular WHERE clause.
 
 set_logging ($state)
 Enable/disable detailed sql logging.
 
 setup_is_unicodedb ()
 Checks to see if the database is in unicode mode?
 
 sql_bitand ($int1, $int2)
 Returns the SQL text to be used in order to perform one bitwise AND operation between 2 integers.
 
 sql_bitnot ($int1)
 Returns the SQL text to be used in order to perform one bitwise NOT operation with 1 integer.
 
 sql_bitor ($int1, $int2)
 Returns the SQL text to be used in order to perform one bitwise OR operation between 2 integers.
 
 sql_bitxor ($int1, $int2)
 Returns the SQL text to be used in order to perform one bitwise XOR operation between 2 integers.
 
 sql_cast_2signed ($fieldname)
 Returns the SQL to be used in order to an UNSIGNED INTEGER column to SIGNED.
 
 sql_cast_char2int ($fieldname, $text=false)
 Returns the SQL to be used in order to CAST one CHAR column to INTEGER.
 
 sql_cast_char2real ($fieldname, $text=false)
 Returns the SQL to be used in order to CAST one CHAR column to REAL number.
 
 sql_cast_to_char (string $field)
 Return SQL for casting to char of given field/expression.
 
 sql_ceil ($fieldname)
 Returns the cross db correct CEIL (ceiling) expression applied to fieldname.
 
 sql_compare_text ($fieldname, $numchars=32)
 Returns the SQL text to be used to compare one TEXT (clob) column with one varchar column, because some RDBMS doesn't support such direct comparisons.
 
 sql_concat (... $arr)
 Returns the proper SQL to do CONCAT between the elements(fieldnames) passed.
 
 sql_concat_join ($separator="' '", $elements=array())
 Returns the proper SQL to do CONCAT between the elements passed with a given separator.
 
 sql_empty ()
 This used to return empty string replacement character.
 
 sql_equal ($fieldname, $param, $casesensitive=true, $accentsensitive=true, $notequal=false)
 Returns an equal (=) or not equal (<>) part of a query.
 
 sql_fullname ($first='firstname', $last='lastname')
 Returns the proper SQL (for the dbms in use) to concatenate $firstname and $lastname.
 
 sql_group_concat (string $field, string $separator=', ', string $sort='')
 Return SQL for performing group concatenation on given field/expression.
 
 sql_intersect ($selects, $fields)
 Returns the SQL that allows to find intersection of two or more queries.
 
 sql_isempty ($tablename, $fieldname, $nullablefield, $textfield)
 Returns the proper SQL to know if one field is empty.
 
 sql_isnotempty ($tablename, $fieldname, $nullablefield, $textfield)
 Returns the proper SQL to know if one field is not empty.
 
 sql_length ($fieldname)
 Returns the SQL text to be used to calculate the length in characters of one expression.
 
 sql_like ($fieldname, $param, $casesensitive=true, $accentsensitive=true, $notlike=false, $escapechar='\\')
 Returns 'LIKE' part of a query.
 
 sql_like_escape ($text, $escapechar='\\')
 Escape common SQL LIKE special characters like '_' or '', plus '[' & ']' which are also supported in SQL Server.
 
 sql_modulo ($int1, $int2)
 Returns the SQL text to be used in order to perform module '' operation - remainder after division.
 
 sql_null_from_clause ()
 Returns the FROM clause required by some DBs in all SELECT statements.
 
 sql_order_by_null (string $fieldname, int $sort=SORT_ASC)
 Returns the SQL text to be used to order by columns, standardising the return pattern of null values across database types to sort nulls first when ascending and last when descending.
 
 sql_order_by_text ($fieldname, $numchars=32)
 Returns the SQL text to be used to order by one TEXT (clob) column, because some RDBMS doesn't support direct ordering of such fields.
 
 sql_position ($needle, $haystack)
 Returns the SQL for returning searching one string for the location of another.
 
 sql_regex ($positivematch=true, $casesensitive=false)
 Returns the driver specific syntax (SQL part) for matching regex positively or negatively (inverted matching).
 
 sql_regex_get_word_beginning_boundary_marker ()
 Returns the word-beginning boundary marker if this database driver supports regex syntax when searching.
 
 sql_regex_get_word_end_boundary_marker ()
 Returns the word-end boundary marker if this database driver supports regex syntax when searching.
 
 sql_regex_supported ()
 Returns true if this database driver supports regex syntax when searching.
 
 sql_substr ($expr, $start, $length=false)
 Returns the proper substr() SQL text used to extract substrings from DB NOTE: this was originally returning only function name.
 
 start_delegated_transaction ()
 On DBs that support it, switch to transaction mode and begin a transaction you'll need to ensure you call allow_commit() on the returned object or your changes will be lost.
 
 transactions_forbidden ()
 This is a test that throws an exception if transaction in progress.
 
 update_record ($table, $dataobject, $bulk=false)
 Update a record in a table.
 
 update_record_raw ($table, $params, $bulk=false)
 Update record in database, as fast as possible, no safety checks, lobs not supported.
 
 update_temp_table_stats ()
 Analyze the data in temporary tables to force statistics collection after bulk data loads.
 
 want_read_slave ()
 Returns whether we want to connect to slave database for read queries.
 

Static Public Member Functions

static get_driver_instance ($type, $library, $external=false)
 Loads and returns a database instance with the specified type and library.
 

Protected Member Functions

 add_no_lock_to_temp_tables ($sql)
 Use NOLOCK on any temp tables.
 
 add_sql_debugging (string $sql)
 Add an SQL comment to trace all sql calls back to the calling php code.
 
 allowed_param_types ()
 Returns supported query parameter types.
 
 begin_transaction ()
 Driver specific start of real database transaction, this can not be used directly in code.
 
 build_native_bound_params (array $params=null)
 Prepare the array of params for native binding.
 
 commit_transaction ()
 Driver specific commit of real database transaction, this can not be used directly in code.
 
 create_recordset ($result)
 Create a record set and initialize with first row.
 
 detect_objects ($value)
 Detects object parameters and throws exception if found.
 
 emulate_bound_params ($sql, array $params=null)
 Workaround for SQL*Server Native driver similar to MSSQL driver for consistent behavior.
 
 fetch_columns (string $table)
 Returns detailed information about columns in table.
 
 fix_table_name ($tablename)
 Adds the prefix to the table name.
 
 fix_table_names ($sql)
 Override: Converts short table name {tablename} to real table name supporting temp tables (#) if detected.
 
 get_collation ()
 
 get_dblibrary ()
 Returns general database library name Note: can be used before connect()
 
 get_dbtype ()
 Returns more specific database driver type Note: can be used before connect()
 
 get_metacache ()
 Handle the creation and caching of the databasemeta information for all databases.
 
 get_settings_hash ()
 Returns a hash for the settings used during connection.
 
 get_temp_tables_cache ()
 Handle the creation and caching of the temporary tables.
 
 normalise_limit_from_num ($limitfrom, $limitnum)
 Ensures that limit params are numeric and positive integers, to be passed to the database.
 
 normalise_value ($column, $value)
 Normalise values based in RDBMS dependencies (booleans, LOBs...)
 
 print_debug ($sql, array $params=null, $obj=null)
 Prints sql debug info.
 
 print_debug_time ()
 Prints the time a query took to run.
 
 query_end ($result)
 Called immediately after each db query.
 
 query_log_allow ()
 Restore old logging behavior.
 
 query_log_prevent ()
 Disable logging temporarily.
 
 query_start ($sql, ?array $params, $type, $extrainfo=null)
 Called before each db query.
 
 query_time ()
 Returns the time elapsed since the query started.
 
 rollback_transaction ()
 Driver specific abort of real database transaction, this can not be used directly in code.
 
 store_settings ($dbhost, $dbuser, $dbpass, $dbname, $prefix, array $dboptions=null)
 Store various database settings.
 
 transactions_supported ()
 Checks and returns true if transactions are supported.
 
 where_clause ($table, array $conditions=null)
 Returns the SQL WHERE conditions.
 
 where_clause_list ($field, array $values)
 Returns SQL WHERE conditions for the ..._list group of methods.
 

Static Protected Member Functions

static has_query_order_by (string $sql)
 Whether the given SQL statement has the ORDER BY clause in the main query.
 

Protected Attributes

 $collation
 
database_manager $database_manager
 db manager which allows db structure modifications.
 
string $dbhost
 db host name.
 
string $dbname
 db name.
 
array $dboptions
 Database or driver specific options, such as sockets or TCP/IP db connections.
 
string $dbpass
 db host password.
 
string $dbuser
 db host user.
 
int $debug = 0
 Debug level.
 
bool $disposed
 flag marking database instance as disposed
 
bool $external
 True means non-moodle external database used.
 
int $inorequaluniqueindex = 1
 internal temporary variable used to guarantee unique parameters in each request.
 
 $last_error_reporting
 
string $last_extrainfo
 Last extra info.
 
array $last_params
 Last query parameters.
 
string $last_sql
 Last used query sql.
 
float $last_time
 Last time in seconds with millisecond precision.
 
int $last_type
 Last query type.
 
bool $loggingquery = false
 Flag indicating logging of query in progress.
 
cache_application $metacache
 for column info
 
cache_application cache_session cache_store $metacachetemp
 for column info on temp tables
 
string $prefix
 Prefix added to table names.
 
float $queriestime = 0
 Time queries took to finish, seconds with microseconds.
 
int $reads = 0
 The database reads (performance counter).
 
array $recordsets = array()
 list of open recordsets
 
array $reservewords
 list of reserve words in MSSQL / Transact from http://msdn2.microsoft.com/en-us/library/ms189822.aspx
 
boolean $skiplogging = false
 variable use to temporarily disable logging.
 
 $sqlsrv = null
 
bool $supportsoffsetfetch
 Does the used db version support ANSI way of limiting (2012 and higher)
 
array $tables = null
 Cache of table info.
 
 $temptables
 
array $transactions = array()
 Array containing open transactions.
 
bool $used_for_db_sessions = false
 True if the db is used for db sessions.
 
int $writes = 0
 The database writes (performance counter).
 

Detailed Description

Native sqlsrv class representing moodle database interface.

License
http://www.gnu.org/copyleft/gpl.html GNU GPL v2 or later

Constructor & Destructor Documentation

◆ __construct()

sqlsrv_native_moodle_database::__construct ( $external = false)

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.

Parameters
booltrue means external database used

Reimplemented from moodle_database.

Member Function Documentation

◆ add_no_lock_to_temp_tables()

sqlsrv_native_moodle_database::add_no_lock_to_temp_tables ( $sql)
protected

Use NOLOCK on any temp tables.

 Since it's a temp table and uncommitted reads are low risk anyway.

Parameters
string$sqlthe SQL select query to execute.
Return values
stringThe SQL, with WITH (NOLOCK) added to all temp tables

◆ add_sql_debugging()

moodle_database::add_sql_debugging ( string $sql)
protectedinherited

Add an SQL comment to trace all sql calls back to the calling php code.

Parameters
string$sqlOriginal sql
Return values
stringInstrumented sql

◆ allowed_param_types()

sqlsrv_native_moodle_database::allowed_param_types ( )
protected

Returns supported query parameter types.

Return values
intbitmask

Reimplemented from moodle_database.

◆ begin_transaction()

sqlsrv_native_moodle_database::begin_transaction ( )
protected

Driver specific start of real database transaction, this can not be used directly in code.

Return values
void

Reimplemented from moodle_database.

◆ change_database_structure()

sqlsrv_native_moodle_database::change_database_structure ( $sql,
$tablenames = null )

Do NOT use in code, to be used by database_manager only!

Parameters
string | array$sqlquery
array | null$tablenamesan array of xmldb table names affected by this request.
Return values
booltrue
Exceptions
ddl_change_structure_exceptionA DDL specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ change_db_encoding()

moodle_database::change_db_encoding ( )
inherited

Attempts to change db encoding to UTF-8 encoding if possible.

Return values
boolTrue is successful.

◆ commit_delegated_transaction()

moodle_database::commit_delegated_transaction ( moodle_transaction $transaction)
inherited

Indicates delegated transaction finished successfully.

The real database transaction is committed only if all delegated transactions committed.

Parameters
moodle_transaction$transactionThe transaction to commit
Return values
void
Exceptions
dml_transaction_exceptionCreates and throws transaction related exceptions.

◆ commit_transaction()

sqlsrv_native_moodle_database::commit_transaction ( )
protected

Driver specific commit of real database transaction, this can not be used directly in code.

Return values
void

Reimplemented from moodle_database.

◆ connect()

sqlsrv_native_moodle_database::connect ( $dbhost,
$dbuser,
$dbpass,
$dbname,
$prefix,
array $dboptions = null )

Connect to db Must be called before most other methods.

(you can call methods that return connection configuration parameters)

Parameters
string$dbhostThe database host.
string$dbuserThe database username.
string$dbpassThe database username's password.
string$dbnameThe name of the database being connected to.
mixed$prefixstring|bool The moodle db table name's prefix. false is used for external databases where prefix not used
array$dboptionsdriver specific options
Return values
booltrue
Exceptions
dml_connection_exceptionif error

Reimplemented from moodle_database.

◆ count_records()

moodle_database::count_records ( $table,
array $conditions = null )
inherited

Count the records in a table where all the given conditions met.

Parameters
string$tableThe table to query.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
Return values
intThe count of records returned from the specified criteria.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ count_records_select()

moodle_database::count_records_select ( $table,
$select,
array $params = null,
$countitem = "COUNT('x')" )
inherited

Count the records in a table which match a particular WHERE clause.

Parameters
string$tableThe database table to be checked against.
string$selectA fragment of SQL to be used in a WHERE clause in the SQL call.
array$paramsarray of sql parameters
string$countitemThe count string to be used in the SQL call. Default is COUNT('x').
Return values
intThe count of records returned from the specified criteria.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ count_records_sql()

moodle_database::count_records_sql ( $sql,
array $params = null )
inherited

Get the result of a SQL SELECT COUNT(...) query.

Given a query that counts rows, return that count. (In fact, given any query, return the first field of the first record returned. However, this method should only be used for the intended purpose.) If an error occurs, 0 is returned.

Parameters
string$sqlThe SQL string you wish to be executed.
array$paramsarray of sql parameters
Return values
intthe count
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ create_database()

moodle_database::create_database ( $dbhost,
$dbuser,
$dbpass,
$dbname,
array $dboptions = null )
inherited

Attempt to create the database.

Parameters
string$dbhostThe database host.
string$dbuserThe database user to connect as.
string$dbpassThe password to use when connecting to the database.
string$dbnameThe name of the database being connected to.
array$dboptionsAn array of optional database options (eg: dbport)
Return values
boolsuccess True for successful connection. False otherwise.

Reimplemented in mysqli_native_moodle_database.

◆ create_recordset()

sqlsrv_native_moodle_database::create_recordset ( $result)
protected

Create a record set and initialize with first row.

Parameters
mixed$result
Return values
sqlsrv_native_moodle_recordset

◆ delete_records()

moodle_database::delete_records ( $table,
array $conditions = null )
inherited

Delete the records from a table where all the given conditions met.

If conditions not specified, table is truncated.

Parameters
string$tablethe table to delete from.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
Return values
booltrue.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ delete_records_list()

moodle_database::delete_records_list ( $table,
$field,
array $values )
inherited

Delete the records from a table where one field match one list of values.

Parameters
string$tablethe table to delete from.
string$fieldThe field to search
array$valuesarray of values
Return values
booltrue.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ delete_records_select()

sqlsrv_native_moodle_database::delete_records_select ( $table,
$select,
array $params = null )

Delete one or more records from a table which match a particular WHERE clause.

Parameters
string$tableThe database table to be checked against.
string$selectA fragment of SQL to be used in a where clause in the SQL call (used to define the selection criteria).
array$paramsarray of sql parameters
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ delete_records_subquery()

moodle_database::delete_records_subquery ( string $table,
string $field,
string $alias,
string $subquery,
array $params = [] )
inherited

Deletes records from a table using a subquery.

The subquery should return a list of values in a single column, which match one field from the table being deleted.

The $alias parameter must be set to the name of the single column in your subquery result (e.g. if the subquery is 'SELECT id FROM whatever', then it should be 'id'). This is not needed on most databases, but MySQL requires it.

(On database where the subquery is inefficient, it is implemented differently.)

Parameters
string$tableTable to delete from
string$fieldField in table to match
string$aliasName of single column in subquery e.g. 'id'
string$subquerySubquery that will return values of the field to delete
array$paramsParameters for subquery
Exceptions
dml_exceptionIf there is any error
Since
Moodle 3.10

Reimplemented in mysqli_native_moodle_database.

◆ detect_objects()

moodle_database::detect_objects ( $value)
protectedinherited

Detects object parameters and throws exception if found.

Parameters
mixed$value
Return values
void
Exceptions
coding_exceptionif object detected

◆ diagnose()

sqlsrv_native_moodle_database::diagnose ( )

Diagnose database and tables, this function is used to verify database and driver settings, db engine types, etc.

Return values
stringnull means everything ok, string means problem found.

Reimplemented from moodle_database.

◆ dispose()

sqlsrv_native_moodle_database::dispose ( )

Close database connection and release all resources and memory (especially circular memory references).

Do NOT use connect() again, create a new instance if needed.

Reimplemented from moodle_database.

◆ driver_installed()

sqlsrv_native_moodle_database::driver_installed ( )

Detects if all needed PHP stuff installed.

Note: can be used before connect()

Return values
mixedtrue if ok, string if something

Reimplemented from moodle_database.

◆ execute()

sqlsrv_native_moodle_database::execute ( $sql,
array $params = null )

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!

Parameters
string$sqlquery
array$paramsquery parameters
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ export_dbconfig()

moodle_database::export_dbconfig ( )
inherited

Returns the db related part of config.php.

Return values
stdClass

◆ export_table_recordset()

moodle_database::export_table_recordset ( $table)
inherited

Get all records from a table.

This method works around potential memory problems and may improve performance, this method may block access to table until the recordset is closed.

Parameters
string$tableName of database table.
Return values
moodle_recordsetA moodle_recordset instance functionget_recordset.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented in mysqli_native_moodle_database.

◆ fetch_columns()

sqlsrv_native_moodle_database::fetch_columns ( string $table)
protected

Returns detailed information about columns in table.

Parameters
string$tablename
Return values
arrayarray of database_column_info objects indexed with column names

Reimplemented from moodle_database.

◆ fix_sql_params()

moodle_database::fix_sql_params ( $sql,
array $params = null )
inherited

Normalizes sql query parameters and verifies parameters.

Parameters
string$sqlThe query or part of it.
array$paramsThe query parameters.
Return values
array(sql, params, type of params)

◆ fix_table_name()

moodle_database::fix_table_name ( $tablename)
protectedinherited

Adds the prefix to the table name.

Parameters
string$tablenameThe table name
Return values
stringThe prefixed table name

Reimplemented in mysqli_native_moodle_database.

◆ fix_table_names()

sqlsrv_native_moodle_database::fix_table_names ( $sql)
protected

Override: Converts short table name {tablename} to real table name supporting temp tables (#) if detected.

Parameters
stringsql
Return values
stringsql

Reimplemented from moodle_database.

◆ force_transaction_rollback()

moodle_database::force_transaction_rollback ( )
inherited

Force rollback of all delegated transaction.

Does not throw any exceptions and does not log anything.

This method should be used only from default exception handlers and other core code.

Return values
void

◆ get_columns()

moodle_database::get_columns ( $table,
$usecache = true )
inherited

Returns detailed information about columns in table.

This information is cached internally.

Parameters
string$tableThe table's name.
bool$usecacheFlag to use internal cacheing. The default is true.
Return values
database_column_info[]of database_column_info objects indexed with column names

◆ get_configuration_help()

sqlsrv_native_moodle_database::get_configuration_help ( )

Returns localised database configuration help.

Note: can be used before connect()

Return values
string

Reimplemented from moodle_database.

◆ get_configuration_hints()

moodle_database::get_configuration_hints ( )
inherited

Returns the localised database description Note: can be used before connect()

Deprecated
since 2.6
Return values
string

◆ get_dbfamily()

sqlsrv_native_moodle_database::get_dbfamily ( )

Returns database family type - describes SQL dialect Note: can be used before connect()

Return values
stringdb family name (mysql, postgres, mssql, sqlsrv, oracle, etc.)

Reimplemented from moodle_database.

◆ get_dblibrary()

sqlsrv_native_moodle_database::get_dblibrary ( )
protected

Returns general database library name Note: can be used before connect()

Return values
stringdb type pdo, native

Reimplemented from moodle_database.

◆ get_dbtype()

sqlsrv_native_moodle_database::get_dbtype ( )
protected

Returns more specific database driver type Note: can be used before connect()

Return values
stringdb type mysqli, pgsql, oci, mssql, sqlsrv

Reimplemented from moodle_database.

◆ get_dbvendor()

moodle_database::get_dbvendor ( )
inherited

Returns the database vendor.

Note: can be used before connect()

Return values
stringThe db vendor name, usually the same as db family name.

Reimplemented in auroramysql_native_moodle_database, and mariadb_native_moodle_database.

◆ get_debug()

moodle_database::get_debug ( )
inherited

Returns debug status.

Return values
bool\$state

◆ get_driver_instance()

static moodle_database::get_driver_instance ( $type,
$library,
$external = false )
staticinherited

Loads and returns a database instance with the specified type and library.

The loaded class is within lib/dml directory and of the form: $type.'_'.$library.'_moodle_database'

Parameters
string$typeDatabase driver's type. (eg: mysqli, pgsql, mssql, sqldrv, oci, etc.)
string$libraryDatabase driver's library (native, pdo, etc.)
bool$externalTrue if this is an external database.
Return values
?moodle_databasedriver object or null if error, for example of driver object see {
See also
mysqli_native_moodle_database}

◆ get_field()

moodle_database::get_field ( $table,
$return,
array $conditions,
$strictness = IGNORE_MISSING )
inherited

Get a single field value from a table record where all the given conditions met.

Parameters
string$tablethe table to query.
string$returnthe field to return the value of.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means throw exception if no record or multiple records found
Return values
mixedthe specified value false if not found
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_field_select()

moodle_database::get_field_select ( $table,
$return,
$select,
array $params = null,
$strictness = IGNORE_MISSING )
inherited

Get a single field value from a table record which match a particular WHERE clause.

Parameters
string$tablethe table to query.
string$returnthe field to return the value of.
string$selectA fragment of SQL to be used in a where clause returning one row with one column
array$paramsarray of sql parameters
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means throw exception if no record or multiple records found
Return values
mixedthe specified value false if not found
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_field_sql()

moodle_database::get_field_sql ( $sql,
array $params = null,
$strictness = IGNORE_MISSING )
inherited

Get a single field value (first field) using a SQL statement.

Parameters
string$sqlThe SQL query returning one row with one column
array$paramsarray of sql parameters
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means throw exception if no record or multiple records found
Return values
mixedthe specified value false if not found
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_fieldset()

moodle_database::get_fieldset ( string $table,
string $return,
?array $conditions = null )
inherited

Selects records and return values of chosen field as an array where all the given conditions met.

Parameters
string$tablethe table to query.
string$returnthe field we are intered in
array | null$conditionsoptional array $fieldname=>requestedvalue with AND in between
Return values
arrayof values
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_fieldset_select()

moodle_database::get_fieldset_select ( $table,
$return,
$select,
array $params = null )
inherited

Selects records and return values of chosen field as an array which match a particular WHERE clause.

Parameters
string$tablethe table to query.
string$returnthe field we are intered in
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsarray of sql parameters
Return values
arrayof values
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_fieldset_sql()

sqlsrv_native_moodle_database::get_fieldset_sql ( $sql,
array $params = null )

Selects records and return values (first field) as an array using a SQL statement.

Parameters
string$sqlThe SQL query
array$paramsarray of sql parameters
Return values
arrayof values
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ get_in_or_equal()

moodle_database::get_in_or_equal ( $items,
$type = SQL_PARAMS_QM,
$prefix = 'param',
$equal = true,
$onemptyitems = false )
inherited

Constructs 'IN()' or '=' sql fragment.

Parameters
mixed$itemsA single value or array of values for the expression.
int$typeParameter bounding type : SQL_PARAMS_QM or SQL_PARAMS_NAMED.
string$prefixNamed parameter placeholder prefix (a unique counter value is appended to each parameter name).
bool$equalTrue means we want to equate to the constructed expression, false means we don't want to equate to it.
mixed$onemptyitemsThis defines the behavior when the array of items provided is empty. Defaults to false, meaning throw exceptions. Other values will become part of the returned SQL fragment.
Exceptions
coding_exception| dml_exception
Return values
arrayA list containing the constructed sql fragment and an array of parameters.

Reimplemented in oci_native_moodle_database, and pgsql_native_moodle_database.

◆ get_indexes()

sqlsrv_native_moodle_database::get_indexes ( $table)

Return table indexes - everything lowercased.

Parameters
string$tableThe table we want to get indexes from.
Return values
arrayof arrays

Reimplemented from moodle_database.

◆ get_last_error()

sqlsrv_native_moodle_database::get_last_error ( )

Returns last error reported by database engine.

Return values
stringerror message

Reimplemented from moodle_database.

◆ get_manager()

moodle_database::get_manager ( )
inherited

Returns the sql generator used for db manipulation.

Used mostly in upgrade.php scripts.

Return values
database_managerThe instance used to perform ddl operations.
See also
lib/ddl/database_manager.php

◆ get_metacache()

moodle_database::get_metacache ( )
protectedinherited

Handle the creation and caching of the databasemeta information for all databases.

Return values
cache_applicationThe databasemeta cachestore to complete operations on.

◆ get_name()

sqlsrv_native_moodle_database::get_name ( )

Returns localised database type name Note: can be used before connect()

Return values
string

Reimplemented from moodle_database.

◆ get_prefix()

moodle_database::get_prefix ( )
inherited

Returns database table prefix Note: can be used before connect()

Return values
stringThe prefix used in the database.

◆ get_record()

moodle_database::get_record ( $table,
array $conditions,
$fields = '*',
$strictness = IGNORE_MISSING )
inherited

Get a single database record as an object where all the given conditions met.

Parameters
string$tableThe table to select from.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
string$fieldsA comma separated list of fields to be returned from the chosen table.
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means we will throw an exception if no record or multiple records found.
Todo
MDL-30407 MUST_EXIST option should not throw a dml_exception, it should throw a different exception as it's a requested check.
Return values
mixeda fieldset object containing the first matching record, false or exception if error not found depending on mode
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_record_select()

moodle_database::get_record_select ( $table,
$select,
array $params = null,
$fields = '*',
$strictness = IGNORE_MISSING )
inherited

Get a single database record as an object which match a particular WHERE clause.

Parameters
string$tableThe database table to be checked against.
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsarray of sql parameters
string$fieldsA comma separated list of fields to be returned from the chosen table.
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means throw exception if no record or multiple records found
Return values
stdClass|falsea fieldset object containing the first matching record, false or exception if error not found depending on mode
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_record_sql()

moodle_database::get_record_sql ( $sql,
array $params = null,
$strictness = IGNORE_MISSING )
inherited

Get a single database record as an object using a SQL statement.

The SQL statement should normally only return one record. It is recommended to use get_records_sql() if more matches possible!

Parameters
string$sqlThe SQL string you wish to be executed, should normally only return one record.
array$paramsarray of sql parameters
int$strictnessIGNORE_MISSING means compatible mode, false returned if record not found, debug message if more found; IGNORE_MULTIPLE means return first, ignore multiple records found(not recommended); MUST_EXIST means throw exception if no record or multiple records found
Return values
mixeda fieldset object containing the first matching record, false or exception if error not found depending on mode
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented in oci_native_moodle_database.

◆ get_records()

moodle_database::get_records ( $table,
array $conditions = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as an array of objects where all the given conditions met.

If the query succeeds and returns at least one record, the return value is an array of objects, one object for each record found. The array key is the value from the first column of the result set. The object associated with that key has a member variable for each column of the results.

Parameters
string$tablethe table to query.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
string$sortan order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsa comma separated list of fields to return (optional, by default all fields are returned). The first field will be used as key for the array so must be a unique field such as 'id'.
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records in total (optional, required if $limitfrom is set).
Return values
arrayAn array of Objects indexed by first column.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_records_list()

moodle_database::get_records_list ( $table,
$field,
array $values,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as an array of objects where one field match one list of values.

Return value is like functionget_records.

Parameters
string$tableThe database table to be checked against.
string$fieldThe field to search
array$valuesAn array of values
string$sortSort order (as valid SQL sort parameter)
string$fieldsA comma separated list of fields to be returned from the chosen table. If specified, the first field should be a unique one such as 'id' since it will be used as a key in the associative array.
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records in total (optional).
Return values
arrayAn array of objects indexed by first column
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_records_menu()

moodle_database::get_records_menu ( $table,
array $conditions = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get the first two columns from a number of records as an associative array where all the given conditions met.

Arguments are like functionget_recordset.

If no errors occur the return value is an associative whose keys come from the first field of each record, and whose values are the corresponding second fields. False is returned if an error occurs.

Parameters
string$tablethe table to query.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
string$sortan order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsa comma separated list of fields to return - the number of fields should be 2!
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
arrayan associative array
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_records_select()

moodle_database::get_records_select ( $table,
$select,
array $params = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as an array of objects which match a particular WHERE clause.

Return value is like functionget_records.

Parameters
string$tableThe table to query.
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsAn array of sql parameters
string$sortAn order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsA comma separated list of fields to return (optional, by default all fields are returned). The first field will be used as key for the array so must be a unique field such as 'id'.
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records in total (optional, required if $limitfrom is set).
Return values
arrayof objects indexed by first column
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_records_select_menu()

moodle_database::get_records_select_menu ( $table,
$select,
array $params = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get the first two columns from a number of records as an associative array which match a particular WHERE clause.

Arguments are like functionget_recordset_select. Return value is like functionget_records_menu.

Parameters
string$tableThe database table to be checked against.
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsarray of sql parameters
string$sortSort order (optional) - a valid SQL order parameter
string$fieldsA comma separated list of fields to be returned from the chosen table - the number of fields should be 2!
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
arrayan associative array
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_records_sql()

sqlsrv_native_moodle_database::get_records_sql ( $sql,
array $params = null,
$limitfrom = 0,
$limitnum = 0 )

Get a number of records as an array of objects using a SQL statement.

Return value is like:

See also
function get_records.
Parameters
string$sqlthe SQL select query to execute. The first column of this SELECT statement must be a unique value (usually the 'id' field), as it will be used as the key of the returned array.
array$paramsarray of sql parameters
int$limitfromreturn a subset of records, starting at this point (optional, required if $limitnum is set).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
arrayof objects, or empty array if no records were found
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ get_records_sql_menu()

moodle_database::get_records_sql_menu ( $sql,
array $params = null,
$limitfrom = 0,
$limitnum = 0 )
inherited

Get the first two columns from a number of records as an associative array using a SQL statement.

Arguments are like functionget_recordset_sql. Return value is like functionget_records_menu.

Parameters
string$sqlThe SQL string you wish to be executed.
array$paramsarray of sql parameters
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
arrayan associative array
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_recordset()

moodle_database::get_recordset ( $table,
array $conditions = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as a moodle_recordset where all the given conditions met.

Selects records from the table $table.

If specified, only records meeting $conditions.

If specified, the results will be sorted as specified by $sort. This is added to the SQL as "ORDER BY $sort". Example values of $sort might be "time ASC" or "time DESC".

If $fields is specified, only those fields are returned.

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 - it leads to simpler code.

If you only want some of the records, specify $limitfrom and $limitnum. The query will skip the first $limitfrom records (according to the sort order) and then return the next $limitnum records. If either of $limitfrom or $limitnum is specified, both must be present.

The return value is a moodle_recordset if the query succeeds. If an error occurs, false is returned.

Parameters
string$tablethe table to query.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
string$sortan order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsa comma separated list of fields to return (optional, by default all fields are returned).
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
moodle_recordsetA moodle_recordset instance
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_recordset_list()

moodle_database::get_recordset_list ( $table,
$field,
array $values,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as a moodle_recordset where one field match one list of values.

Only records where $field takes one of the values $values are returned. $values must be an array of values.

Other arguments and the return type are like functionget_recordset.

Parameters
string$tablethe table to query.
string$fielda field to check (optional).
array$valuesarray of values the field must have
string$sortan order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsa comma separated list of fields to return (optional, by default all fields are returned).
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
moodle_recordsetA moodle_recordset instance.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_recordset_select()

moodle_database::get_recordset_select ( $table,
$select,
array $params = null,
$sort = '',
$fields = '*',
$limitfrom = 0,
$limitnum = 0 )
inherited

Get a number of records as a moodle_recordset which match a particular WHERE clause.

If given, $select is used as the SELECT parameter in the SQL query, otherwise all records from the table are returned.

Other arguments and the return type are like functionget_recordset.

Parameters
string$tablethe table to query.
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsarray of sql parameters
string$sortan order to sort the results in (optional, a valid SQL ORDER BY parameter).
string$fieldsa comma separated list of fields to return (optional, by default all fields are returned).
int$limitfromreturn a subset of records, starting at this point (optional).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
moodle_recordsetA moodle_recordset instance.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ get_recordset_sql()

sqlsrv_native_moodle_database::get_recordset_sql ( $sql,
array $params = null,
$limitfrom = 0,
$limitnum = 0 )

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:

See also
function get_recordset.
Parameters
string$sqlthe SQL select query to execute.
array$paramsarray of sql parameters
int$limitfromreturn a subset of records, starting at this point (optional, required if $limitnum is set).
int$limitnumreturn a subset comprising this many records (optional, required if $limitfrom is set).
Return values
moodle_recordsetinstance
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ get_server_info()

sqlsrv_native_moodle_database::get_server_info ( )

Returns database server info array.

Return values
arrayArray containing 'description', 'version' and 'database' (current db) info

Reimplemented from moodle_database.

◆ get_session_lock()

sqlsrv_native_moodle_database::get_session_lock ( $rowid,
$timeout )

Obtain session lock.

Parameters
int$rowidid of the row with session record
int$timeoutmax allowed time to wait for the lock in seconds
Return values
void

Reimplemented from moodle_database.

◆ get_settings_hash()

moodle_database::get_settings_hash ( )
protectedinherited

Returns a hash for the settings used during connection.

If not already requested it is generated and stored in a private property.

Return values
string

◆ get_tables()

sqlsrv_native_moodle_database::get_tables ( $usecache = true)

Return tables in database WITHOUT current prefix.

Parameters
bool$usecacheif true, returns list of cached tables.
Return values
arrayof table names in lowercase and without prefix

Reimplemented from moodle_database.

◆ get_temp_tables_cache()

moodle_database::get_temp_tables_cache ( )
protectedinherited

Handle the creation and caching of the temporary tables.

Return values
cache_applicationThe temp_tables cachestore to complete operations on.

◆ get_transaction_start_backtrace()

moodle_database::get_transaction_start_backtrace ( )
inherited

Returns transaction trace for debugging purposes.

to be used by core only

Return values
?arrayor null if not in transaction.

◆ has_query_order_by()

static sqlsrv_native_moodle_database::has_query_order_by ( string $sql)
staticprotected

Whether the given SQL statement has the ORDER BY clause in the main query.

Parameters
string$sqlthe SQL statement
Return values
booltrue if the main query has the ORDER BY clause; otherwise, false.

◆ import_record()

sqlsrv_native_moodle_database::import_record ( $table,
$dataobject )

Import a record into a table, id field is required.

Safety checks are NOT carried out. Lobs are supported.

Parameters
string$tablename of database table to be inserted into
object$dataobjectA data object with values for one or more fields in the record
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ insert_record()

sqlsrv_native_moodle_database::insert_record ( $table,
$dataobject,
$returnid = true,
$bulk = false )

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

Parameters
string$tableThe database table to be inserted into
object | array$dataobjectA data object with values for one or more fields in the record
bool$returnidShould the id of the newly created record entry be returned? If this option is not requested then true/false is returned.
Return values
bool|inttrue or new id
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ insert_record_raw()

sqlsrv_native_moodle_database::insert_record_raw ( $table,
$params,
$returnid = true,
$bulk = false,
$customsequence = false )

Insert new record into database, as fast as possible, no safety checks, lobs not supported.

Parameters
string$tablename
mixed$paramsdata record as object or array
bool$returnitreturn it of inserted record
bool$bulktrue means repeated inserts expected
bool$customsequencetrue if 'id' included in $params, disables $returnid
Return values
bool|inttrue or new id
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ insert_records()

moodle_database::insert_records ( $table,
$dataobjects )
inherited

Insert multiple records into database as fast as possible.

Order of inserts is maintained, but the operation is not atomic, use transactions if necessary.

This method is intended for inserting of large number of small objects, do not use for huge objects with text or binary fields.

Since
Moodle 2.7
Parameters
string$tableThe database table to be inserted into
array | Traversable$dataobjectslist of objects to be inserted, must be compatible with foreach
Return values
voiddoes not return new record ids
Exceptions
coding_exceptionif data objects have different structure
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented in mysqli_native_moodle_database, and pgsql_native_moodle_database.

◆ is_fulltext_search_supported()

sqlsrv_native_moodle_database::is_fulltext_search_supported ( )

Is fulltext search enabled?.

Return values
bool

Reimplemented from moodle_database.

◆ is_transaction_started()

moodle_database::is_transaction_started ( )
inherited

Returns true if a transaction is in progress.

Return values
bool

◆ normalise_limit_from_num()

moodle_database::normalise_limit_from_num ( $limitfrom,
$limitnum )
protectedinherited

Ensures that limit params are numeric and positive integers, to be passed to the database.

We explicitly treat null, '' and -1 as 0 in order to provide compatibility with how limit values have been passed historically.

Parameters
int$limitfromWhere to start results from
int$limitnumHow many results to return
Return values
arrayNormalised limit params in array($limitfrom, $limitnum)

◆ normalise_value()

sqlsrv_native_moodle_database::normalise_value ( $column,
$value )
protected

Normalise values based in RDBMS dependencies (booleans, LOBs...)

Parameters
database_column_info$columncolumn metadata corresponding with the value we are going to normalise
mixed$valuevalue we are going to normalise
Return values
mixedthe normalised value

Reimplemented from moodle_database.

◆ perf_get_queries()

moodle_database::perf_get_queries ( )
inherited

Returns the number of queries done by this database.

Return values
intNumber of queries.

◆ perf_get_queries_time()

moodle_database::perf_get_queries_time ( )
inherited

Time waiting for the database engine to finish running all queries.

Return values
floatNumber of seconds with microseconds

◆ perf_get_reads()

moodle_database::perf_get_reads ( )
inherited

Returns the number of reads done by this database.

Return values
intNumber of reads.

◆ perf_get_reads_slave()

moodle_database::perf_get_reads_slave ( )
inherited

Returns the number of reads before first write done by this database.

Return values
intNumber of reads.

◆ perf_get_writes()

moodle_database::perf_get_writes ( )
inherited

Returns the number of writes done by this database.

Return values
intNumber of writes.

◆ print_debug()

moodle_database::print_debug ( $sql,
array $params = null,
$obj = null )
protectedinherited

Prints sql debug info.

Parameters
string$sqlThe query which is being debugged.
array$paramsThe query parameters. (optional)
mixed$objThe library specific object. (optional)
Return values
void

◆ print_debug_time()

moodle_database::print_debug_time ( )
protectedinherited

Prints the time a query took to run.

Return values
void

◆ query_end()

sqlsrv_native_moodle_database::query_end ( $result)
protected

Called immediately after each db query.

Parameters
mixeddb specific result
Return values
void

Reimplemented from moodle_database.

◆ query_log()

moodle_database::query_log ( $error = false)
inherited

This logs the last query based on 'logall', 'logslow' and 'logerrors' options configured via $CFG->dboptions .

Parameters
string | bool$erroror false if not error
Return values
void

◆ query_start()

sqlsrv_native_moodle_database::query_start ( $sql,
?array $params,
$type,
$extrainfo = null )
protected

Called before each db query.

Parameters
string$sql
array | null$paramsAn array of parameters.
int$typetype of query
mixed$extrainfodriver specific extra information
Return values
void

Reimplemented from moodle_database.

◆ query_time()

moodle_database::query_time ( )
protectedinherited

Returns the time elapsed since the query started.

Return values
floatSeconds with microseconds

◆ record_exists()

moodle_database::record_exists ( $table,
array $conditions )
inherited

Test whether a record exists in a table where all the given conditions met.

Parameters
string$tableThe table to check.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
Return values
booltrue if a matching record exists, else false.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ record_exists_select()

moodle_database::record_exists_select ( $table,
$select,
array $params = null )
inherited

Test whether any records exists in a table which match a particular WHERE clause.

Parameters
string$tableThe database table to be checked against.
string$selectA fragment of SQL to be used in a WHERE clause in the SQL call.
array$paramsarray of sql parameters
Return values
booltrue if a matching record exists, else false.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ record_exists_sql()

moodle_database::record_exists_sql ( $sql,
array $params = null )
inherited

Test whether a SQL SELECT statement returns any records.

This function returns true if the SQL statement executes without any errors and returns at least one record.

Parameters
string$sqlThe SQL statement to execute.
array$paramsarray of sql parameters
Return values
booltrue if the SQL executes without errors and returns at least one record.
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ release_session_lock()

sqlsrv_native_moodle_database::release_session_lock ( $rowid)

Releases the session lock.

Parameters
int$rowidThe id of the row with session record.
Return values
void
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ replace_all_text()

moodle_database::replace_all_text ( $table,
database_column_info $column,
$search,
$replace )
inherited

Replace given text in all rows of column.

Since
Moodle 2.6.1
Parameters
string$tablename of the table
database_column_info$column
string$search
string$replace

◆ replace_all_text_supported()

sqlsrv_native_moodle_database::replace_all_text_supported ( )

Does this driver support tool_replace?

Since
Moodle 2.6.1
Return values
bool

Reimplemented from moodle_database.

◆ reset_caches()

moodle_database::reset_caches ( $tablenames = null)
inherited

Resets the internal column details cache.

Parameters
array | null$tablenamesan array of xmldb table names affected by this request.
Return values
void

◆ rollback_delegated_transaction()

moodle_database::rollback_delegated_transaction ( moodle_transaction $transaction,
$e )
inherited

Call when delegated transaction failed, this rolls back all delegated transactions up to the top most level.

In many cases you do not need to call this method manually, because all open delegated transactions are rolled back automatically if exceptions not caught.

Parameters
moodle_transaction$transactionAn instance of a moodle_transaction.
Exception | Throwable$eThe related exception/throwable to this transaction rollback.
Return values
voidThis does not return, instead the exception passed in will be rethrown.

◆ rollback_transaction()

sqlsrv_native_moodle_database::rollback_transaction ( )
protected

Driver specific abort of real database transaction, this can not be used directly in code.

Return values
void

Reimplemented from moodle_database.

◆ session_lock_supported()

sqlsrv_native_moodle_database::session_lock_supported ( )

Is session lock supported in this driver?

Return values
bool

Reimplemented from moodle_database.

◆ set_debug()

moodle_database::set_debug ( $state)
inherited

Enable/disable very detailed debugging.

Parameters
bool$state
Return values
void

◆ set_field()

moodle_database::set_field ( $table,
$newfield,
$newvalue,
array $conditions = null )
inherited

Set a single field in every table record where all the given conditions met.

Parameters
string$tableThe database table to be checked against.
string$newfieldthe field to set.
mixed$newvaluethe value to set the field to.
array$conditionsoptional array $fieldname=>requestedvalue with AND in between
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

◆ set_field_select()

sqlsrv_native_moodle_database::set_field_select ( $table,
$newfield,
$newvalue,
$select,
array $params = null )

Set a single field in every table record which match a particular WHERE clause.

Parameters
string$tableThe database table to be checked against.
string$newfieldthe field to set.
string$newvaluethe value to set the field to.
string$selectA fragment of SQL to be used in a where clause in the SQL call.
array$paramsarray of sql parameters
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ set_logging()

moodle_database::set_logging ( $state)
inherited

Enable/disable detailed sql logging.

Deprecated
since Moodle 2.9

◆ setup_is_unicodedb()

moodle_database::setup_is_unicodedb ( )
inherited

Checks to see if the database is in unicode mode?

Return values
bool

Reimplemented in mysqli_native_moodle_database, oci_native_moodle_database, and pgsql_native_moodle_database.

◆ sql_bitand()

moodle_database::sql_bitand ( $int1,
$int2 )
inherited

Returns the SQL text to be used in order to perform one bitwise AND operation between 2 integers.

NOTE: The SQL result is a number and can not be used directly in SQL condition, please compare it to some number to get a bool!!

Parameters
string$int1SQL for the first integer in the operation.
string$int2SQL for the second integer in the operation.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database.

◆ sql_bitnot()

moodle_database::sql_bitnot ( $int1)
inherited

Returns the SQL text to be used in order to perform one bitwise NOT operation with 1 integer.

Parameters
int$int1The operand integer in the operation.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database.

◆ sql_bitor()

moodle_database::sql_bitor ( $int1,
$int2 )
inherited

Returns the SQL text to be used in order to perform one bitwise OR operation between 2 integers.

NOTE: The SQL result is a number and can not be used directly in SQL condition, please compare it to some number to get a bool!!

Parameters
int$int1The first operand integer in the operation.
int$int2The second operand integer in the operation.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database.

◆ sql_bitxor()

moodle_database::sql_bitxor ( $int1,
$int2 )
inherited

Returns the SQL text to be used in order to perform one bitwise XOR operation between 2 integers.

NOTE: The SQL result is a number and can not be used directly in SQL condition, please compare it to some number to get a bool!!

Parameters
int$int1The first operand integer in the operation.
int$int2The second operand integer in the operation.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database, and pgsql_native_moodle_database.

◆ sql_cast_2signed()

moodle_database::sql_cast_2signed ( $fieldname)
inherited

Returns the SQL to be used in order to an UNSIGNED INTEGER column to SIGNED.

(Only MySQL needs this. MySQL things that 1 * -1 = 18446744073709551615 if the 1 comes from an unsigned column).

Deprecated
since 2.3
Parameters
string$fieldnameThe name of the field to be cast
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in mysqli_native_moodle_database.

◆ sql_cast_char2int()

sqlsrv_native_moodle_database::sql_cast_char2int ( $fieldname,
$text = false )

Returns the SQL to be used in order to CAST one CHAR column to INTEGER.

Be aware that the CHAR column you're trying to cast contains really int values or the RDBMS will throw an error!

Parameters
string$fieldnameThe name of the field to be casted.
bool$textSpecifies if the original column is one TEXT (CLOB) column (true). Defaults to false.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented from moodle_database.

◆ sql_cast_char2real()

sqlsrv_native_moodle_database::sql_cast_char2real ( $fieldname,
$text = false )

Returns the SQL to be used in order to CAST one CHAR column to REAL number.

Be aware that the CHAR column you're trying to cast contains really numbers or the RDBMS will throw an error!

Parameters
string$fieldnameThe name of the field to be casted.
bool$textSpecifies if the original column is one TEXT (CLOB) column (true). Defaults to false.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented from moodle_database.

◆ sql_cast_to_char()

sqlsrv_native_moodle_database::sql_cast_to_char ( string $field)

Return SQL for casting to char of given field/expression.

Parameters
string$fieldTable field or SQL expression to be cast
Return values
string

Reimplemented from moodle_database.

◆ sql_ceil()

sqlsrv_native_moodle_database::sql_ceil ( $fieldname)

Returns the cross db correct CEIL (ceiling) expression applied to fieldname.

note: Most DBs use CEIL(), hence it's the default here.

Parameters
string$fieldnameThe field (or expression) we are going to ceil.
Return values
stringThe piece of SQL code to be used in your ceiling statement.

Reimplemented from moodle_database.

◆ sql_compare_text()

moodle_database::sql_compare_text ( $fieldname,
$numchars = 32 )
inherited

Returns the SQL text to be used to compare one TEXT (clob) column with one varchar column, because some RDBMS doesn't support such direct comparisons.

Parameters
string$fieldnameThe name of the TEXT field we need to order by
int$numcharsNumber of chars to use for the ordering (defaults to 32).
Return values
stringThe piece of SQL code to be used in your statement.

◆ sql_concat()

sqlsrv_native_moodle_database::sql_concat ( ...)

Returns the proper SQL to do CONCAT between the elements(fieldnames) passed.

This function accepts variable number of string parameters. All strings/fieldnames will used in the SQL concatenate statement generated.

Parameters
string$arr,...expressions to be concatenated.
Return values
stringThe SQL to concatenate strings passed in.

Reimplemented from moodle_database.

◆ sql_concat_join()

sqlsrv_native_moodle_database::sql_concat_join ( $separator = "' '",
$elements = array() )

Returns the proper SQL to do CONCAT between the elements passed with a given separator.

Parameters
string$separatorThe separator desired for the SQL concatenating $elements.
array$elementsThe array of strings to be concatenated.
Return values
stringThe SQL to concatenate the strings.

Reimplemented from moodle_database.

◆ sql_empty()

moodle_database::sql_empty ( )
inherited

This used to return empty string replacement character.

Deprecated
use bound parameter with empty string instead
Return values
stringAn empty string.

◆ sql_equal()

sqlsrv_native_moodle_database::sql_equal ( $fieldname,
$param,
$casesensitive = true,
$accentsensitive = true,
$notequal = false )

Returns an equal (=) or not equal (<>) part of a query.

Note the use of this method may lead to slower queries (full scans) so use it only when needed and against already reduced data sets.

Since
Moodle 3.2
Parameters
string$fieldnameUsually the name of the table column.
string$paramUsually the bound query parameter (?, :named).
bool$casesensitiveUse case sensitive search when set to true (default).
bool$accentsensitiveUse accent sensitive search when set to true (default). (not all databases support accent insensitive)
bool$notequalTrue means not equal (<>)
Return values
stringThe SQL code fragment.

Reimplemented from moodle_database.

◆ sql_fullname()

moodle_database::sql_fullname ( $first = 'firstname',
$last = 'lastname' )
inherited

Returns the proper SQL (for the dbms in use) to concatenate $firstname and $lastname.

Todo
MDL-31233 This may not be needed here.
Parameters
string$firstUser's first name (default:'firstname').
string$lastUser's last name (default:'lastname').
Return values
stringThe SQL to concatenate strings.

◆ sql_group_concat()

sqlsrv_native_moodle_database::sql_group_concat ( string $field,
string $separator = ',
' ,
string $sort = '' )

Return SQL for performing group concatenation on given field/expression.

Parameters
string$field
string$separator
string$sort
Return values
string

Reimplemented from moodle_database.

◆ sql_intersect()

moodle_database::sql_intersect ( $selects,
$fields )
inherited

Returns the SQL that allows to find intersection of two or more queries.

Since
Moodle 2.8
Parameters
array$selectsarray of SQL select queries, each of them only returns fields with the names from $fields
string$fieldscomma-separated list of fields (used only by some DB engines)
Return values
stringSQL query that will return only values that are present in each of selects

Reimplemented in mysqli_native_moodle_database.

◆ sql_isempty()

sqlsrv_native_moodle_database::sql_isempty ( $tablename,
$fieldname,
$nullablefield,
$textfield )

Returns the proper SQL to know if one field is empty.

Note that the function behavior strongly relies on the parameters passed describing the field so, please, be accurate when specifying them.

Also, note that this function is not suitable to look for fields having NULL contents at all. It's all for empty values!

This function should be applied in all the places where conditions of the type:

... AND fieldname = '';

are being used. Final result for text fields should be:

... AND ' . sql_isempty('tablename', 'fieldname', true/false, true);

and for varchar fields result should be:

... AND fieldname = :empty; "; $params['empty'] = '';

(see parameters description below)

Parameters
string$tablenameName of the table (without prefix). Not used for now but can be necessary in the future if we want to use some introspection using meta information against the DB. /// TODO ///
string$fieldnameName of the field we are going to check
bool$nullablefieldFor specifying if the field is nullable (true) or no (false) in the DB.
bool$textfieldFor specifying if it is a text (also called clob) field (true) or a varchar one (false)
Return values
stringthe sql code to be added to check for empty values

Reimplemented from moodle_database.

◆ sql_isnotempty()

moodle_database::sql_isnotempty ( $tablename,
$fieldname,
$nullablefield,
$textfield )
inherited

Returns the proper SQL to know if one field is not empty.

Note that the function behavior strongly relies on the parameters passed describing the field so, please, be accurate when specifying them.

This function should be applied in all the places where conditions of the type:

... AND fieldname != '';

are being used. Final result for text fields should be:

... AND ' . sql_isnotempty('tablename', 'fieldname', true/false, true/false);

and for varchar fields result should be:

... AND fieldname != :empty; "; $params['empty'] = '';

(see parameters description below)

Parameters
string$tablenameName of the table (without prefix). This is not used for now but can be necessary in the future if we want to use some introspection using meta information against the DB.
string$fieldnameThe name of the field we are going to check.
bool$nullablefieldSpecifies if the field is nullable (true) or not (false) in the DB.
bool$textfieldSpecifies if it is a text (also called clob) field (true) or a varchar one (false).
Return values
stringThe sql code to be added to check for non empty values.

◆ sql_length()

sqlsrv_native_moodle_database::sql_length ( $fieldname)

Returns the SQL text to be used to calculate the length in characters of one expression.

Parameters
stringfieldname or expression to calculate its length in characters.
Return values
stringthe piece of SQL code to be used in the statement.

Reimplemented from moodle_database.

◆ sql_like()

sqlsrv_native_moodle_database::sql_like ( $fieldname,
$param,
$casesensitive = true,
$accentsensitive = true,
$notlike = false,
$escapechar = '\\' )

Returns 'LIKE' part of a query.

Parameters
string$fieldnameusually name of the table column
string$paramusually bound query parameter (?, :named)
bool$casesensitiveuse case sensitive search
bool$accensensitiveuse accent sensitive search (not all databases support accent insensitive)
bool$notliketrue means "NOT LIKE"
string$escapecharescape char for '' and '_'
Return values
stringSQL code fragment

Reimplemented from moodle_database.

◆ sql_like_escape()

sqlsrv_native_moodle_database::sql_like_escape ( $text,
$escapechar = '\\' )

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

Parameters
string$text
string$escapechar
Return values
string

Reimplemented from moodle_database.

◆ sql_modulo()

moodle_database::sql_modulo ( $int1,
$int2 )
inherited

Returns the SQL text to be used in order to perform module '' operation - remainder after division.

Parameters
int$int1The first operand integer in the operation.
int$int2The second operand integer in the operation.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database.

◆ sql_null_from_clause()

moodle_database::sql_null_from_clause ( )
inherited

Returns the FROM clause required by some DBs in all SELECT statements.

To be used in queries not having FROM clause to provide cross_db Most DBs don't need it, hence the default is ''

Return values
string

Reimplemented in oci_native_moodle_database.

◆ sql_order_by_null()

moodle_database::sql_order_by_null ( string $fieldname,
int $sort = SORT_ASC )
inherited

Returns the SQL text to be used to order by columns, standardising the return pattern of null values across database types to sort nulls first when ascending and last when descending.

Parameters
string$fieldnameThe name of the field we need to sort by.
int$sortAn order to sort the results in.
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented in oci_native_moodle_database, and pgsql_native_moodle_database.

◆ sql_order_by_text()

sqlsrv_native_moodle_database::sql_order_by_text ( $fieldname,
$numchars = 32 )

Returns the SQL text to be used to order by one TEXT (clob) column, because some RDBMS doesn't support direct ordering of such fields.

Note that the use or queries being ordered by TEXT columns must be minimised, because it's really slooooooow.

Parameters
string$fieldnameThe name of the TEXT field we need to order by.
int$numcharsThe number of chars to use for the ordering (defaults to 32).
Return values
stringThe piece of SQL code to be used in your statement.

Reimplemented from moodle_database.

◆ sql_position()

sqlsrv_native_moodle_database::sql_position ( $needle,
$haystack )

Returns the SQL for returning searching one string for the location of another.

Reimplemented from moodle_database.

◆ sql_regex()

moodle_database::sql_regex ( $positivematch = true,
$casesensitive = false )
inherited

Returns the driver specific syntax (SQL part) for matching regex positively or negatively (inverted matching).

Eg: 'REGEXP':'NOT REGEXP' or '~*' : '!~*'

Parameters
bool$positivematch
bool$casesensitive
Return values
stringor empty if not supported

Reimplemented in mysqli_native_moodle_database, and pgsql_native_moodle_database.

◆ sql_regex_get_word_beginning_boundary_marker()

moodle_database::sql_regex_get_word_beginning_boundary_marker ( )
inherited

Returns the word-beginning boundary marker if this database driver supports regex syntax when searching.

Return values
stringThe word-beginning boundary marker. Otherwise, an empty string.

Reimplemented in mysqli_native_moodle_database.

◆ sql_regex_get_word_end_boundary_marker()

moodle_database::sql_regex_get_word_end_boundary_marker ( )
inherited

Returns the word-end boundary marker if this database driver supports regex syntax when searching.

Return values
stringThe word-end boundary marker. Otherwise, an empty string.

Reimplemented in mysqli_native_moodle_database.

◆ sql_regex_supported()

moodle_database::sql_regex_supported ( )
inherited

Returns true if this database driver supports regex syntax when searching.

Return values
boolTrue if supported.

Reimplemented in mysqli_native_moodle_database, and pgsql_native_moodle_database.

◆ sql_substr()

sqlsrv_native_moodle_database::sql_substr ( $expr,
$start,
$length = false )

Returns the proper substr() SQL text used to extract substrings from DB NOTE: this was originally returning only function name.

Parameters
string$exprsome string field, no aggregates
mixed$startinteger or expression evaluating to int
mixed$lengthoptional integer or expression evaluating to int
Return values
stringsql fragment

Reimplemented from moodle_database.

◆ start_delegated_transaction()

moodle_database::start_delegated_transaction ( )
inherited

On DBs that support it, switch to transaction mode and begin a transaction you'll need to ensure you call allow_commit() on the returned object or your changes will be lost.

this is very useful for massive updates

Delegated database transactions can be nested, but only one actual database transaction is used for the outer-most delegated transaction. This method returns a transaction object which you should keep until the end of the delegated transaction. The actual database transaction will only be committed if all the nested delegated transactions commit successfully. If any part of the transaction rolls back then the whole thing is rolled back.

Return values
moodle_transaction

◆ store_settings()

moodle_database::store_settings ( $dbhost,
$dbuser,
$dbpass,
$dbname,
$prefix,
array $dboptions = null )
protectedinherited

Store various database settings.

Parameters
string$dbhostThe database host.
string$dbuserThe database user to connect as.
string$dbpassThe password to use when connecting to the database.
string$dbnameThe name of the database being connected to.
mixed$prefixstring means moodle db prefix, false used for external databases where prefix not used
array$dboptionsdriver specific options
Return values
void

◆ transactions_forbidden()

moodle_database::transactions_forbidden ( )
inherited

This is a test that throws an exception if transaction in progress.

This test does not force rollback of active transactions.

Return values
void
Exceptions
dml_transaction_exceptionif stansaction active

◆ transactions_supported()

moodle_database::transactions_supported ( )
protectedinherited

Checks and returns true if transactions are supported.

It is not responsible to run productions servers on databases without transaction support ;-)

Override in driver if needed.

Return values
bool

Reimplemented in auroramysql_native_moodle_database, mariadb_native_moodle_database, and mysqli_native_moodle_database.

◆ update_record()

sqlsrv_native_moodle_database::update_record ( $table,
$dataobject,
$bulk = false )

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

Parameters
string$tableThe database table to be checked against.
stdClass | array$dataobjectAn object with contents equal to fieldname=>fieldvalue. Must have an entry for 'id' to map to the table specified.
booltrue means repeated updates expected
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ update_record_raw()

sqlsrv_native_moodle_database::update_record_raw ( $table,
$params,
$bulk = false )

Update record in database, as fast as possible, no safety checks, lobs not supported.

Parameters
string$tablename
stdClass | array$paramsdata record as object or array
booltrue means repeated updates expected
Return values
booltrue
Exceptions
dml_exceptionA DML specific exception is thrown for any errors.

Reimplemented from moodle_database.

◆ update_temp_table_stats()

moodle_database::update_temp_table_stats ( )
inherited

Analyze the data in temporary tables to force statistics collection after bulk data loads.

Return values
void

◆ want_read_slave()

moodle_database::want_read_slave ( )
inherited

Returns whether we want to connect to slave database for read queries.

Return values
boolWant read only connection

◆ where_clause()

moodle_database::where_clause ( $table,
array $conditions = null )
protectedinherited

Returns the SQL WHERE conditions.

Parameters
string$tableThe table name that these conditions will be validated against.
array$conditionsThe conditions to build the where clause. (must not contain numeric indexes)
Return values
arrayAn array list containing sql 'where' part and 'params'.
Exceptions
dml_exception

◆ where_clause_list()

moodle_database::where_clause_list ( $field,
array $values )
protectedinherited

Returns SQL WHERE conditions for the ..._list group of methods.

Parameters
string$fieldthe name of a field.
array$valuesthe values field might take.
Return values
arrayAn array containing sql 'where' part and 'params'

Member Data Documentation

◆ $inorequaluniqueindex

int moodle_database::$inorequaluniqueindex = 1
protectedinherited

internal temporary variable used to guarantee unique parameters in each request.

Its used by get_in_or_equal().

◆ $loggingquery

bool moodle_database::$loggingquery = false
protectedinherited

Flag indicating logging of query in progress.

This helps prevent infinite loops.

◆ $reservewords

array sqlsrv_native_moodle_database::$reservewords
protected
Initial value:
= [
"add", "all", "alter", "and", "any", "as", "asc", "authorization", "avg", "backup", "begin", "between", "break",
"browse", "bulk", "by", "cascade", "case", "check", "checkpoint", "close", "clustered", "coalesce", "collate", "column",
"commit", "committed", "compute", "confirm", "constraint", "contains", "containstable", "continue", "controlrow",
"convert", "count", "create", "cross", "current", "current_date", "current_time", "current_timestamp", "current_user",
"cursor", "database", "dbcc", "deallocate", "declare", "default", "delete", "deny", "desc", "disk", "distinct",
"distributed", "double", "drop", "dummy", "dump", "else", "end", "errlvl", "errorexit", "escape", "except", "exec",
"execute", "exists", "exit", "external", "fetch", "file", "fillfactor", "floppy", "for", "foreign", "freetext",
"freetexttable", "from", "full", "function", "goto", "grant", "group", "having", "holdlock", "identity",
"identity_insert", "identitycol", "if", "in", "index", "inner", "insert", "intersect", "into", "is", "isolation",
"join", "key", "kill", "left", "level", "like", "lineno", "load", "max", "merge", "min", "mirrorexit", "national",
"nocheck", "nonclustered", "not", "null", "nullif", "of", "off", "offsets", "on", "once", "only", "open",
"opendatasource", "openquery", "openrowset", "openxml", "option", "or", "order", "outer", "over", "percent", "perm",
"permanent", "pipe", "pivot", "plan", "precision", "prepare", "primary", "print", "privileges", "proc", "procedure",
"processexit", "public", "raiserror", "read", "readtext", "reconfigure", "references", "repeatable", "replication",
"restore", "restrict", "return", "revert", "revoke", "right", "rollback", "rowcount", "rowguidcol", "rule", "save",
"schema", "securityaudit", "select", "semantickeyphrasetable", "semanticsimilaritydetailstable",
"semanticsimilaritytable", "serializable", "session_user", "set", "setuser", "shutdown", "some", "statistics", "sum",
"system_user", "table", "tablesample", "tape", "temp", "temporary", "textsize", "then", "to", "top", "tran",
"transaction", "trigger", "truncate", "try_convert", "tsequal", "uncommitted", "union", "unique", "unpivot", "update",
"updatetext", "use", "user", "values", "varying", "view", "waitfor", "when", "where", "while", "with", "within group",
"work", "writetext"
]

list of reserve words in MSSQL / Transact from http://msdn2.microsoft.com/en-us/library/ms189822.aspx


The documentation for this class was generated from the following file: