summaryrefslogtreecommitdiff
path: root/includes/database/mysql
diff options
context:
space:
mode:
authorDavid Rothstein <drothstein@gmail.com>2015-10-03 14:37:59 -0400
committerDavid Rothstein <drothstein@gmail.com>2015-10-03 14:37:59 -0400
commite575b47da2f00016ee62d169ecdfaf09e8cb4cd5 (patch)
treec4f5875c090cbed9df99fb18c14c636685d25f20 /includes/database/mysql
parent4cc037d4dd9b52ee59eecb3bbf1795c75c0ead5a (diff)
downloadbrdo-e575b47da2f00016ee62d169ecdfaf09e8cb4cd5.tar.gz
brdo-e575b47da2f00016ee62d169ecdfaf09e8cb4cd5.tar.bz2
Issue #2388255 by dawehner, pwolanin, hussainweb, greggles: Limit PDO MySQL to executing single statements if PHP supports it
Diffstat (limited to 'includes/database/mysql')
-rw-r--r--includes/database/mysql/database.inc11
1 files changed, 9 insertions, 2 deletions
diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc
index 0b84f2719..fdf9271be 100644
--- a/includes/database/mysql/database.inc
+++ b/includes/database/mysql/database.inc
@@ -51,6 +51,11 @@ class DatabaseConnection_mysql extends DatabaseConnection {
// Because MySQL's prepared statements skip the query cache, because it's dumb.
PDO::ATTR_EMULATE_PREPARES => TRUE,
);
+ if (defined('PDO::MYSQL_ATTR_MULTI_STATEMENTS')) {
+ // An added connection option in PHP 5.5.21+ to optionally limit SQL to a
+ // single statement like mysqli.
+ $connection_options['pdo'] += array(PDO::MYSQL_ATTR_MULTI_STATEMENTS => FALSE);
+ }
parent::__construct($dsn, $connection_options['username'], $connection_options['password'], $connection_options['pdo']);
@@ -78,8 +83,10 @@ class DatabaseConnection_mysql extends DatabaseConnection {
$connection_options['init_commands'] += array(
'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'",
);
- // Set connection options.
- $this->exec(implode('; ', $connection_options['init_commands']));
+ // Execute initial commands.
+ foreach ($connection_options['init_commands'] as $sql) {
+ $this->exec($sql);
+ }
}
public function __destruct() {