MySQLDatabase
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
Execute the given SQL query.
Execute the given SQL parameterised query with the specified arguments
Get the autogenerated ID from the previous INSERT query.
Determines if we are connected to a server AND have a valid database selected.
Returns an escaped string. This string won't be quoted, so would be suitable for appending to other quoted strings.
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!
Clear all data in a given table
Generate a WHERE clause for text matching.
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
function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime addition
function to return an SQL datetime expression that can be used with the adapter in use used for querying a datetime substraction
Returns true if this database supports collations
Can the database override timezone as a connection setting, or does it use the system timezone exclusively?
Get the database server type (e.g. mysql, postgresql).
The core search engine, used by this class and its subclasses to do fun stuff.
Determines if this database supports transactions
Start a prepared transaction See http://developer.postgresql.org/pgdocs/postgres/sql-set-transaction.html for details on transaction isolation options
Create a savepoint that you can jump back to if you encounter problems
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
Commit everything inside this transaction so far
Determines if the used database supports application-level locks, which is different from table- or row-level locking.
Returns if the lock is available.
Sets an application-level lock so that no two processes can run at the same time, also called a "cooperative advisory lock".
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).
Instruct the database to generate a live connection
Determine if the database with the specified name exists
Change the connection to the specified database, optionally creating the database if it doesn't exist in the current schema.
Drop the database that this object is currently connected to.
Returns the name of the currently selected database
Return SQL expression used to represent the current date/time
Returns the database-specific version of the random() function
No description
No description
No description
Sets the SQL mode
Sets the system timezone for the database connection
Details
in SS_Database at line 33
DBConnector
getConnector()
Get the current connector
in SS_Database at line 42
setConnector(DBConnector $connector)
Injector injection point for connector dependency
in SS_Database at line 58
DBSchemaManager
getSchemaManager()
Returns the current schema manager
in SS_Database at line 67
setSchemaManager(DBSchemaManager $schemaManager)
Injector injection point for schema manager
in SS_Database at line 87
DBQueryBuilder
getQueryBuilder()
Returns the current query builder
in SS_Database at line 96
setQueryBuilder(DBQueryBuilder $queryBuilder)
Injector injection point for schema manager
in SS_Database at line 107
SS_Query
query(string $sql, int $errorLevel = E_USER_ERROR)
Execute the given SQL 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
in SS_Database at line 203
integer
getGeneratedID(string $table)
Get the autogenerated ID from the previous INSERT query.
in SS_Database at line 213
boolean
isActive()
Determines if we are connected to a server AND have a valid database selected.
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.
in SS_Database at line 234
string
quoteString(mixed $value)
Wrap a string into DB-specific quotes.
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!
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()).
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
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.
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
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
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
at line 87
boolean
supportsCollations()
Returns true if this database supports collations
at line 91
Boolean
supportsTimezoneOverride()
Can the database override timezone as a connection setting, or does it use the system timezone exclusively?
in SS_Database at line 440
string
getVersion()
Query for the version of the currently connected 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
in SS_Database at line 457
int
affectedRows()
Return the number of rows affected by the previous operation.
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.
at line 232
boolean
supportsTransactions()
Determines if this database supports 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
at line 249
transactionSavepoint(string $savepoint)
Create a savepoint that you can jump back to if you encounter problems
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
at line 261
transactionEnd(boolean $chain = false)
Commit everything inside this transaction so far
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.
at line 333
boolean
canLock(string $name)
Returns if the lock is available.
See {@link supportsLocks()} to check if locking is generally supported.
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.
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).
at line 21
connect(array $parameters)
Instruct the database to generate a live connection
in SS_Database at line 622
boolean
databaseExists(string $name)
Determine if the database with the specified name exists
in SS_Database at line 631
array
databaseList()
Retrieves the list of all databases the user has access to
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.
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
at line 357
string
now()
Return SQL expression used to represent the current date/time
at line 362
string
random()
Returns the database-specific version of the random() function
in SS_Database at line 706
dbDataType($type)
deprecated
deprecated since version 4.0 Use DB::get_schema()->dbDataType($type) instead
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
in SS_Database at line 731
prepStringForDB($string)
deprecated
deprecated since version 4.0 Use Convert::raw2sql($string, true) instead
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
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
in SS_Database at line 777
renameTable($oldTableName, $newTableName)
deprecated
deprecated since version 4.0 Use DB::get_schema()->renameTable() instead
in SS_Database at line 785
createField($table, $field, $spec)
deprecated
deprecated since version 4.0 Use DB::create_field() instead
in SS_Database at line 793
renameField($tableName, $oldName, $newName)
deprecated
deprecated since version 4.0 Use DB::get_schema()->renameField() instead
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
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
in SS_Database at line 833
enumValuesForField($tableName, $fieldName)
deprecated
deprecated since version 4.0 Use DB::get_schema()->enumValuesForField() instead
in SS_Database at line 841
addslashes($value)
deprecated
deprecated since version 4.0 Use Convert::raw2sql instead
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
in SS_Database at line 899
transAlterTable($table, $options, $advanced_options)
deprecated
deprecated since version 4.0 Use DB::get_schema()->transAlterTable() instead
in SS_Database at line 907
transCreateField($table, $field, $schema)
deprecated
deprecated since version 4.0 Use DB::get_schema()->transCreateField() instead
in SS_Database at line 915
transCreateIndex($table, $index, $schema)
deprecated
deprecated since version 4.0 Use DB::get_schema()->transCreateIndex() instead
in SS_Database at line 923
transAlterField($table, $field, $schema)
deprecated
deprecated since version 4.0 Use DB::get_schema()->transAlterField() instead
in SS_Database at line 931
transAlterIndex($table, $index, $schema)
deprecated
deprecated since version 4.0 Use DB::get_schema()->transAlterIndex() instead
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
in SS_Database at line 951
dontRequireTable($table)
deprecated
deprecated since version 4.0 Use DB::dont_require_table() instead
in SS_Database at line 959
requireIndex($table, $index, $spec)
deprecated
deprecated since version 4.0 Use DB::require_index() instead
in SS_Database at line 967
hasField($tableName, $fieldName)
deprecated
deprecated since version 4.0 Use DB::get_schema()->hasField() instead
in SS_Database at line 975
requireField($table, $field, $spec)
deprecated
deprecated since version 4.0 Use DB::require_field() instead
in SS_Database at line 983
dontRequireField($table, $fieldName)
deprecated
deprecated since version 4.0 Use DB::dont_require_field() instead
in SS_Database at line 991
sqlQueryToString(SQLExpression $query, $parameters = array())
deprecated
deprecated since version 4.0 Use DB::build_sql() instead
at line 62
static
set_connection_charset($charset = 'utf8')
deprecated
deprecated 4.0 Use "MySQLDatabase.connection_charset" config setting instead
at line 72
setSQLMode(string $mode)
Sets the SQL mode
at line 82
selectTimezone(string $timezone)
Sets the system timezone for the database connection