class MySQLDatabase extends SS_Database

MySQL connector class.

Supported indexes for {@link requireTable()}:

Config options

connection_charset String Default connection charset (may be overridden in $databaseConfig)

Methods

getConnector()

Get the current connector

setConnector(DBConnector $connector)

Injector injection point for connector dependency

getSchemaManager()

Returns the current schema manager

setSchemaManager(DBSchemaManager $schemaManager)

Injector injection point for schema manager

getQueryBuilder()

Returns the current query builder

setQueryBuilder(DBQueryBuilder $queryBuilder)

Injector injection point for schema manager

query(string $sql, int $errorLevel = E_USER_ERROR)

Execute the given SQL query.

preparedQuery(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)

Execute the given SQL parameterised query with the specified arguments

integer
getGeneratedID(string $table)

Get the autogenerated ID from the previous INSERT query.

boolean
isActive()

Determines if we are connected to a server AND have a valid database selected.

string
escapeString(mixed $value)

Returns an escaped string. This string won't be quoted, so would be suitable for appending to other quoted strings.

string
quoteString(mixed $value)

Wrap a string into DB-specific quotes.

escapeIdentifier(string $value, string $separator = '.')

Escapes an identifier (table / database name). Typically the value is simply double quoted. Don't pass in already escaped identifiers in, as this will double escape the value!

manipulate(array $manipulation)

Execute a complex manipulation on the database.

quiet()

Enable supression of database messages.

clearAllData()

Clear all data out of the database

clearTable(string $table)

Clear all data in a given table

String
comparisonClause(String $field, String $value, boolean $exact = false, boolean $negate = false, boolean $caseSensitive = null, boolean $parameterised = false)

Generate a WHERE clause for text matching.

string
formattedDatetimeClause(string $date, string $format)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime in a certain format

string
datetimeIntervalClause($date, $interval)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime addition

string
datetimeDifferenceClause($date1, $date2)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime substraction

boolean
supportsCollations()

Returns true if this database supports collations

Boolean
supportsTimezoneOverride()

Can the database override timezone as a connection setting, or does it use the system timezone exclusively?

string
getVersion()

Query for the version of the currently connected database

string
getDatabaseServer()

Get the database server type (e.g. mysql, postgresql).

int
affectedRows()

Return the number of rows affected by the previous operation.

searchEngine(array $classesToSearch, string $keywords, integer $start, integer $pageLength, string $sortBy = "Relevance DESC", string $extraFilter = "", boolean $booleanSearch = false, string $alternativeFileFilter = "", boolean $invertedMatch = false)

The core search engine, used by this class and its subclasses to do fun stuff.

boolean
supportsTransactions()

Determines if this database supports transactions

transactionStart(string|boolean $transactionMode = false, string|boolean $sessionCharacteristics = false)

Start a prepared transaction See http://developer.postgresql.org/pgdocs/postgres/sql-set-transaction.html for details on transaction isolation options

transactionSavepoint(string $savepoint)

Create a savepoint that you can jump back to if you encounter problems

transactionRollback(string|boolean $savepoint = false)

Rollback or revert to a savepoint if your queries encounter problems If you encounter a problem at any point during a transaction, you may need to rollback that particular query, or return to a savepoint

transactionEnd(boolean $chain = false)

Commit everything inside this transaction so far

boolean
supportsLocks()

Determines if the used database supports application-level locks, which is different from table- or row-level locking.

boolean
canLock(string $name)

Returns if the lock is available.

boolean
getLock(string $name, integer $timeout = 5)

Sets an application-level lock so that no two processes can run at the same time, also called a "cooperative advisory lock".

boolean
releaseLock(string $name)

Remove an application-level lock file to allow another process to run (if the execution aborts (e.g. due to an error) all locks are automatically released).

connect(array $parameters)

Instruct the database to generate a live connection

boolean
databaseExists(string $name)

Determine if the database with the specified name exists

array
databaseList()

Retrieves the list of all databases the user has access to

boolean
selectDatabase(string $name, boolean $create = false, int|boolean $errorLevel = E_USER_ERROR)

Change the connection to the specified database, optionally creating the database if it doesn't exist in the current schema.

dropSelectedDatabase()

Drop the database that this object is currently connected to.

string|null
getSelectedDatabase()

Returns the name of the currently selected database

string
now()

Return SQL expression used to represent the current date/time

string
random()

Returns the database-specific version of the random() function

dbDataType($type) deprecated

No description

createDatabase() deprecated

No description

getConnect($parameters) deprecated

No description

prepStringForDB($string) deprecated

No description

dropDatabase() deprecated

No description

allDatabaseNames() deprecated

No description

createTable($table, $fields = null, $indexes = null, $options = null, $advancedOptions = null) deprecated

No description

alterTable($table, $newFields = null, $newIndexes = null, $alteredFields = null, $alteredIndexes = null, $alteredOptions = null, $advancedOptions = null) deprecated

No description

renameTable($oldTableName, $newTableName) deprecated

No description

createField($table, $field, $spec) deprecated

No description

renameField($tableName, $oldName, $newName) deprecated

No description

currentDatabase() deprecated

No description

fieldList($table) deprecated

No description

tableList() deprecated

No description

hasTable($tableName) deprecated

No description

enumValuesForField($tableName, $fieldName) deprecated

No description

addslashes($value) deprecated

No description

beginSchemaUpdate() deprecated

No description

endSchemaUpdate() deprecated

No description

cancelSchemaUpdate() deprecated

No description

isSchemaUpdating() deprecated

No description

doesSchemaNeedUpdating() deprecated

No description

transCreateTable($table, $options = null, $advanced_options = null) deprecated

No description

transAlterTable($table, $options, $advanced_options) deprecated

No description

transCreateField($table, $field, $schema) deprecated

No description

transCreateIndex($table, $index, $schema) deprecated

No description

transAlterField($table, $field, $schema) deprecated

No description

transAlterIndex($table, $index, $schema) deprecated

No description

requireTable($table, $fieldSchema = null, $indexSchema = null, $hasAutoIncPK = true, $options = array(), $extensions = false) deprecated

No description

dontRequireTable($table) deprecated

No description

requireIndex($table, $index, $spec) deprecated

No description

hasField($tableName, $fieldName) deprecated

No description

requireField($table, $field, $spec) deprecated

No description

dontRequireField($table, $fieldName) deprecated

No description

sqlQueryToString(SQLExpression $query, $parameters = array()) deprecated

No description

static 
set_connection_charset($charset = 'utf8') deprecated

No description

setSQLMode(string $mode)

Sets the SQL mode

selectTimezone(string $timezone)

Sets the system timezone for the database connection

Details

in SS_Database at line 33
DBConnector getConnector()

Get the current connector

Return Value

DBConnector

in SS_Database at line 42
setConnector(DBConnector $connector)

Injector injection point for connector dependency

Parameters

DBConnector $connector

in SS_Database at line 58
DBSchemaManager getSchemaManager()

Returns the current schema manager

Return Value

DBSchemaManager

in SS_Database at line 67
setSchemaManager(DBSchemaManager $schemaManager)

Injector injection point for schema manager

Parameters

DBSchemaManager $schemaManager

in SS_Database at line 87
DBQueryBuilder getQueryBuilder()

Returns the current query builder

Return Value

DBQueryBuilder

in SS_Database at line 96
setQueryBuilder(DBQueryBuilder $queryBuilder)

Injector injection point for schema manager

Parameters

DBQueryBuilder $queryBuilder

in SS_Database at line 107
SS_Query query(string $sql, int $errorLevel = E_USER_ERROR)

Execute the given SQL query.

Parameters

string $sql The SQL query to execute
int $errorLevel The level of error reporting to enable for the query

Return Value

SS_Query

in SS_Database at line 132
SS_Query preparedQuery(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)

Execute the given SQL parameterised query with the specified arguments

Parameters

string $sql The SQL query to execute. The ? character will denote parameters.
array $parameters An ordered list of arguments.
int $errorLevel The level of error reporting to enable for the query

Return Value

SS_Query

in SS_Database at line 203
integer getGeneratedID(string $table)

Get the autogenerated ID from the previous INSERT query.

Parameters

string $table The name of the table to get the generated ID for

Return Value

integer the most recently generated ID for the specified table

in SS_Database at line 213
boolean isActive()

Determines if we are connected to a server AND have a valid database selected.

Return Value

boolean Flag indicating that a valid database is connected

in SS_Database at line 224
string escapeString(mixed $value)

Returns an escaped string. This string won't be quoted, so would be suitable for appending to other quoted strings.

Parameters

mixed $value Value to be prepared for database query

Return Value

string Prepared string

in SS_Database at line 234
string quoteString(mixed $value)

Wrap a string into DB-specific quotes.

Parameters

mixed $value Value to be prepared for database query

Return Value

string Prepared string

in SS_Database at line 246
escapeIdentifier(string $value, string $separator = '.')

Escapes an identifier (table / database name). Typically the value is simply double quoted. Don't pass in already escaped identifiers in, as this will double escape the value!

Parameters

string $value The identifier to escape
string $separator optional identifier splitter

in SS_Database at line 278
manipulate(array $manipulation)

Execute a complex manipulation on the database.

A manipulation is an array of insert / or update sequences. The keys of the array are table names, and the values are map containing 'command' and 'fields'. Command should be 'insert' or 'update', and fields should be a map of field names to field values, NOT including quotes.

The field values could also be in paramaterised format, such as array('MAX(?,?)' => array(42, 69)), allowing the use of raw SQL values such as array('NOW()' => array()).

Parameters

array $manipulation

See also

SQLWriteExpression::addAssignments for syntax examples

in SS_Database at line 329
quiet()

Enable supression of database messages.

in SS_Database at line 336
clearAllData()

Clear all data out of the database

at line 371
clearTable(string $table)

Clear all data in a given table

Parameters

string $table Name of table

at line 265
String comparisonClause(String $field, String $value, boolean $exact = false, boolean $negate = false, boolean $caseSensitive = null, boolean $parameterised = false)

Generate a WHERE clause for text matching.

Parameters

String $field Quoted field name
String $value Escaped search. Can include percentage wildcards. Ignored if $parameterised is true.
boolean $exact Exact matches or wildcard support.
boolean $negate Negate the clause.
boolean $caseSensitive Enforce case sensitivity if TRUE or FALSE. Fallback to default collation if set to NULL.
boolean $parameterised Insert the ? placeholder rather than the given value. If this is true then $value is ignored.

Return Value

String SQL

at line 282
string formattedDatetimeClause(string $date, string $format)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime in a certain format

Parameters

string $date to be formated, can be either 'now', literal datetime like '1973-10-14 10:30:00' or field name, e.g. '"SiteTree"."Created"'
string $format to be used, supported specifiers: %Y = Year (four digits) %m = Month (01..12) %d = Day (01..31) %H = Hour (00..23) %i = Minutes (00..59) %s = Seconds (00..59) %U = unix timestamp, can only be used on it's own

Return Value

string SQL datetime expression to query for a formatted datetime

at line 300
string datetimeIntervalClause($date, $interval)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime addition

Parameters

$date
$interval

Return Value

string SQL datetime expression to query for a datetime (YYYY-MM-DD hh:mm:ss) which is the result of the addition

at line 312
string datetimeDifferenceClause($date1, $date2)

function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime substraction

Parameters

$date1
$date2

Return Value

string SQL datetime expression to query for the interval between $date1 and $date2 in seconds which is the result of the substraction

at line 87
boolean supportsCollations()

Returns true if this database supports collations

Return Value

boolean

at line 91
Boolean supportsTimezoneOverride()

Can the database override timezone as a connection setting, or does it use the system timezone exclusively?

Return Value

Boolean

in SS_Database at line 440
string getVersion()

Query for the version of the currently connected database

Return Value

string Version of this database

at line 95
string getDatabaseServer()

Get the database server type (e.g. mysql, postgresql).

This value is passed to the connector as the 'driver' argument when initiating a database connection

Return Value

string

in SS_Database at line 457
int affectedRows()

Return the number of rows affected by the previous operation.

Return Value

int

at line 105
PaginatedList searchEngine(array $classesToSearch, string $keywords, integer $start, integer $pageLength, string $sortBy = "Relevance DESC", string $extraFilter = "", boolean $booleanSearch = false, string $alternativeFileFilter = "", boolean $invertedMatch = false)

The core search engine, used by this class and its subclasses to do fun stuff.

Searches both SiteTree and File.

Parameters

array $classesToSearch List of classes to search
string $keywords Keywords as a string.
integer $start Item to start returning results from
integer $pageLength Number of items per page
string $sortBy Sort order expression
string $extraFilter Additional filter
boolean $booleanSearch Flag for boolean search mode
string $alternativeFileFilter
boolean $invertedMatch

Return Value

PaginatedList Search results

at line 232
boolean supportsTransactions()

Determines if this database supports transactions

Return Value

boolean Flag indicating support for transactions

at line 236
transactionStart(string|boolean $transactionMode = false, string|boolean $sessionCharacteristics = false)

Start a prepared transaction See http://developer.postgresql.org/pgdocs/postgres/sql-set-transaction.html for details on transaction isolation options

Parameters

string|boolean $transactionMode Transaction mode, or false to ignore
string|boolean $sessionCharacteristics Session characteristics, or false to ignore

at line 249
transactionSavepoint(string $savepoint)

Create a savepoint that you can jump back to if you encounter problems

Parameters

string $savepoint Name of savepoint

at line 253
transactionRollback(string|boolean $savepoint = false)

Rollback or revert to a savepoint if your queries encounter problems If you encounter a problem at any point during a transaction, you may need to rollback that particular query, or return to a savepoint

Parameters

string|boolean $savepoint Name of savepoint, or leave empty to rollback to last savepoint

at line 261
transactionEnd(boolean $chain = false)

Commit everything inside this transaction so far

Parameters

boolean $chain

at line 329
boolean supportsLocks()

Determines if the used database supports application-level locks, which is different from table- or row-level locking.

See {@link getLock()} for details.

Return Value

boolean Flag indicating that locking is available

at line 333
boolean canLock(string $name)

Returns if the lock is available.

See {@link supportsLocks()} to check if locking is generally supported.

Parameters

string $name Name of the lock

Return Value

boolean

at line 338
boolean getLock(string $name, integer $timeout = 5)

Sets an application-level lock so that no two processes can run at the same time, also called a "cooperative advisory lock".

Return FALSE if acquiring the lock fails; otherwise return TRUE, if lock was acquired successfully. Lock is automatically released if connection to the database is broken (either normally or abnormally), making it less prone to deadlocks than session- or file-based locks. Should be accompanied by a {@link releaseLock()} call after the logic requiring the lock has completed. Can be called multiple times, in which case locks "stack" (PostgreSQL, SQL Server), or auto-releases the previous lock (MySQL).

Note that this might trigger the database to wait for the lock to be released, delaying further execution.

Parameters

string $name Name of lock
integer $timeout Timeout in seconds

Return Value

boolean

at line 346
boolean releaseLock(string $name)

Remove an application-level lock file to allow another process to run (if the execution aborts (e.g. due to an error) all locks are automatically released).

Parameters

string $name Name of the lock

Return Value

boolean Flag indicating whether the lock was successfully released

at line 21
connect(array $parameters)

Instruct the database to generate a live connection

Parameters

array $parameters An map of parameters, which should include: - server: The server, eg, localhost - username: The username to log on with - password: The password to log on with - database: The database to connect to - charset: The character set to use. Defaults to utf8 - timezone: (optional) The timezone offset. For example: +12:00, "Pacific/Auckland", or "SYSTEM" - driver: (optional) Driver name

in SS_Database at line 622
boolean databaseExists(string $name)

Determine if the database with the specified name exists

Parameters

string $name Name of the database to check for

Return Value

boolean Flag indicating whether this database exists

in SS_Database at line 631
array databaseList()

Retrieves the list of all databases the user has access to

Return Value

array List of database names

in SS_Database at line 647
boolean selectDatabase(string $name, boolean $create = false, int|boolean $errorLevel = E_USER_ERROR)

Change the connection to the specified database, optionally creating the database if it doesn't exist in the current schema.

Parameters

string $name Name of the database
boolean $create Flag indicating whether the database should be created if it doesn't exist. If $create is false and the database doesn't exist then an error will be raised
int|boolean $errorLevel The level of error reporting to enable for the query, or false if no error should be raised

Return Value

boolean Flag indicating success

in SS_Database at line 672
dropSelectedDatabase()

Drop the database that this object is currently connected to.

Use with caution.

in SS_Database at line 685
string|null getSelectedDatabase()

Returns the name of the currently selected database

Return Value

string|null Name of the selected database, or null if none selected

at line 357
string now()

Return SQL expression used to represent the current date/time

Return Value

string Expression for the current date/time

at line 362
string random()

Returns the database-specific version of the random() function

Return Value

string Expression for a random value

in SS_Database at line 706
dbDataType($type) deprecated

deprecated since version 4.0 Use DB::get_schema()->dbDataType($type) instead

Parameters

$type

in SS_Database at line 714
createDatabase() deprecated

deprecated since version 4.0 Use selectDatabase('dbname', true) instead

in SS_Database at line 724
getConnect($parameters) deprecated

deprecated since version 4.0 SS_Database::getConnect was never implemented and is obsolete

Parameters

$parameters

in SS_Database at line 731
prepStringForDB($string) deprecated

deprecated since version 4.0 Use Convert::raw2sql($string, true) instead

Parameters

$string

in SS_Database at line 739
dropDatabase() deprecated

deprecated since version 4.0 Use dropSelectedDatabase instead

in SS_Database at line 747
allDatabaseNames() deprecated

deprecated since version 4.0 Use databaseList instead

in SS_Database at line 755
createTable($table, $fields = null, $indexes = null, $options = null, $advancedOptions = null) deprecated

deprecated since version 4.0 Use DB::create_table instead

Parameters

$table
$fields
$indexes
$options
$advancedOptions

in SS_Database at line 763
alterTable($table, $newFields = null, $newIndexes = null, $alteredFields = null, $alteredIndexes = null, $alteredOptions = null, $advancedOptions = null) deprecated

deprecated since version 4.0 Use DB::get_schema()->alterTable() instead

Parameters

$table
$newFields
$newIndexes
$alteredFields
$alteredIndexes
$alteredOptions
$advancedOptions

in SS_Database at line 777
renameTable($oldTableName, $newTableName) deprecated

deprecated since version 4.0 Use DB::get_schema()->renameTable() instead

Parameters

$oldTableName
$newTableName

in SS_Database at line 785
createField($table, $field, $spec) deprecated

deprecated since version 4.0 Use DB::create_field() instead

Parameters

$table
$field
$spec

in SS_Database at line 793
renameField($tableName, $oldName, $newName) deprecated

deprecated since version 4.0 Use DB::get_schema()->renameField() instead

Parameters

$tableName
$oldName
$newName

in SS_Database at line 801
currentDatabase() deprecated

deprecated since version 4.0 Use getSelectedDatabase instead

in SS_Database at line 809
fieldList($table) deprecated

deprecated since version 4.0 Use DB::field_list instead

Parameters

$table

in SS_Database at line 817
tableList() deprecated

deprecated since version 4.0 Use DB::table_list instead

in SS_Database at line 825
hasTable($tableName) deprecated

deprecated since version 4.0 Use DB::get_schema()->hasTable() instead

Parameters

$tableName

in SS_Database at line 833
enumValuesForField($tableName, $fieldName) deprecated

deprecated since version 4.0 Use DB::get_schema()->enumValuesForField() instead

Parameters

$tableName
$fieldName

in SS_Database at line 841
addslashes($value) deprecated

deprecated since version 4.0 Use Convert::raw2sql instead

Parameters

$value

in SS_Database at line 849
beginSchemaUpdate() deprecated

deprecated since version 3.2 Use DB::get_schema()->schemaUpdate with a callback instead

in SS_Database at line 858
endSchemaUpdate() deprecated

deprecated since version 3.2 Use DB::get_schema()->schemaUpdate with a callback instead

in SS_Database at line 867
cancelSchemaUpdate() deprecated

deprecated since version 4.0 Use DB::get_schema()->cancelSchemaUpdate instead

in SS_Database at line 875
isSchemaUpdating() deprecated

deprecated since version 4.0 Use DB::get_schema()->isSchemaUpdating() instead

in SS_Database at line 883
doesSchemaNeedUpdating() deprecated

deprecated since version 4.0 Use DB::get_schema()->doesSchemaNeedUpdating() instead

in SS_Database at line 891
transCreateTable($table, $options = null, $advanced_options = null) deprecated

deprecated since version 4.0 Use DB::get_schema()->transCreateTable() instead

Parameters

$table
$options
$advanced_options

in SS_Database at line 899
transAlterTable($table, $options, $advanced_options) deprecated

deprecated since version 4.0 Use DB::get_schema()->transAlterTable() instead

Parameters

$table
$options
$advanced_options

in SS_Database at line 907
transCreateField($table, $field, $schema) deprecated

deprecated since version 4.0 Use DB::get_schema()->transCreateField() instead

Parameters

$table
$field
$schema

in SS_Database at line 915
transCreateIndex($table, $index, $schema) deprecated

deprecated since version 4.0 Use DB::get_schema()->transCreateIndex() instead

Parameters

$table
$index
$schema

in SS_Database at line 923
transAlterField($table, $field, $schema) deprecated

deprecated since version 4.0 Use DB::get_schema()->transAlterField() instead

Parameters

$table
$field
$schema

in SS_Database at line 931
transAlterIndex($table, $index, $schema) deprecated

deprecated since version 4.0 Use DB::get_schema()->transAlterIndex() instead

Parameters

$table
$index
$schema

in SS_Database at line 939
requireTable($table, $fieldSchema = null, $indexSchema = null, $hasAutoIncPK = true, $options = array(), $extensions = false) deprecated

deprecated since version 4.0 Use DB::require_table() instead

Parameters

$table
$fieldSchema
$indexSchema
$hasAutoIncPK
$options
$extensions

in SS_Database at line 951
dontRequireTable($table) deprecated

deprecated since version 4.0 Use DB::dont_require_table() instead

Parameters

$table

in SS_Database at line 959
requireIndex($table, $index, $spec) deprecated

deprecated since version 4.0 Use DB::require_index() instead

Parameters

$table
$index
$spec

in SS_Database at line 967
hasField($tableName, $fieldName) deprecated

deprecated since version 4.0 Use DB::get_schema()->hasField() instead

Parameters

$tableName
$fieldName

in SS_Database at line 975
requireField($table, $field, $spec) deprecated

deprecated since version 4.0 Use DB::require_field() instead

Parameters

$table
$field
$spec

in SS_Database at line 983
dontRequireField($table, $fieldName) deprecated

deprecated since version 4.0 Use DB::dont_require_field() instead

Parameters

$table
$fieldName

in SS_Database at line 991
sqlQueryToString(SQLExpression $query, $parameters = array()) deprecated

deprecated since version 4.0 Use DB::build_sql() instead

Parameters

SQLExpression $query
$parameters

at line 62
static set_connection_charset($charset = 'utf8') deprecated

deprecated 4.0 Use "MySQLDatabase.connection_charset" config setting instead

Parameters

$charset

at line 72
setSQLMode(string $mode)

Sets the SQL mode

Parameters

string $mode Connection mode

at line 82
selectTimezone(string $timezone)

Sets the system timezone for the database connection

Parameters

string $timezone