function Connection::__construct
Constructs a Connection object.
Parameters
object $connection: An object of the client class representing a database connection.
array $connection_options: An array of options for the connection. May include the following:
- prefix
- namespace
- Other driver-specific options.
An 'extra_prefix' option may be present to allow BC for attaching per-table prefixes, but it is meant for internal use only.
Overrides Connection::__construct
File
-
core/
modules/ mysql/ src/ Driver/ Database/ mysql/ Connection.php, line 94
Class
- Connection
- MySQL implementation of \Drupal\Core\Database\Connection.
Namespace
Drupal\mysql\Driver\Database\mysqlCode
public function __construct(\PDO $connection, array $connection_options) {
// If the SQL mode doesn't include 'ANSI_QUOTES' (explicitly or via a
// combination mode), then MySQL doesn't interpret a double quote as an
// identifier quote, in which case use the non-ANSI-standard backtick.
//
// Because we still support MySQL 5.7, check for the deprecated combination
// modes as well.
//
// @see https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes
$ansi_quotes_modes = [
'ANSI_QUOTES',
'ANSI',
'DB2',
'MAXDB',
'MSSQL',
'ORACLE',
'POSTGRESQL',
];
$is_ansi_quotes_mode = FALSE;
foreach ($ansi_quotes_modes as $mode) {
// None of the modes in $ansi_quotes_modes are substrings of other modes
// that are not in $ansi_quotes_modes, so a simple stripos() does not
// return false positives.
if (stripos($connection_options['init_commands']['sql_mode'], $mode) !== FALSE) {
$is_ansi_quotes_mode = TRUE;
break;
}
}
if ($this->identifierQuotes === [
'"',
'"',
] && !$is_ansi_quotes_mode) {
$this->identifierQuotes = [
'`',
'`',
];
}
parent::__construct($connection, $connection_options);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.