diff --git a/core/INSTALL.txt b/core/INSTALL.txt
index ab25c46..079533c 100644
--- a/core/INSTALL.txt
+++ b/core/INSTALL.txt
@@ -18,7 +18,8 @@ Drupal requires:
 - A web server with PHP support, for example:
   - Apache 2.0 (or greater) (http://httpd.apache.org/).
   - Nginx 1.1 (or greater) (http://nginx.com/).
-- PHP 5.4.5 (or greater) (http://php.net/).
+- PHP 5.4.5 (or greater) (http://php.net/). For better security support its
+  recommended to update to at least 5.5.21 or 5.6.5.
 - One of the following databases:
   - MySQL 5.0.15 (or greater) (http://www.mysql.com/).
   - MariaDB 5.1.44 (or greater) (https://mariadb.org/). MariaDB is a fully
@@ -62,6 +63,10 @@ OPTIONAL SERVER REQUIREMENTS
   configuration allows the web server to initiate outbound connections. Most web
   hosting setups allow this.
 
+- PHP 5.5.21 provides features for improved security when used with MySQL. While
+  this is not required, it is highly encouraged to use PHP 5.5.21 or 5.6.5 and
+  above.
+
 INSTALLATION
 ------------
 
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 06d4f08..8f68097 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -2215,18 +2215,12 @@ function install_display_requirements($install_state, $requirements) {
   // If there are errors, always display them. If there are only warnings, skip
   // them if the user has provided a URL parameter acknowledging the warnings
   // and indicating a desire to continue anyway. See drupal_requirements_url().
-  if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING && empty($install_state['parameters']['continue']))) {
+  if ($severity == REQUIREMENT_ERROR) {
     if ($install_state['interactive']) {
       $build['report']['#theme'] = 'status_report';
       $build['report']['#requirements'] = $requirements;
-      if ($severity == REQUIREMENT_WARNING) {
-        $build['#title'] = t('Requirements review');
-        $build['#suffix'] = t('Check the messages and <a href="!retry">retry</a>, or you may choose to <a href="!cont">continue anyway</a>.', array('!retry' => check_url(drupal_requirements_url(REQUIREMENT_ERROR)), '!cont' => check_url(drupal_requirements_url($severity))));
-      }
-      else {
-        $build['#title'] = t('Requirements problem');
-        $build['#suffix'] = t('Check the messages and <a href="!url">try again</a>.', array('!url' => check_url(drupal_requirements_url($severity))));
-      }
+      $build['#title'] = t('Requirements problem');
+      $build['#suffix'] = t('Check the messages and <a href="!url">try again</a>.', array('!url' => check_url(drupal_requirements_url($severity))));
       return $build;
     }
     else {
diff --git a/core/includes/install.inc b/core/includes/install.inc
index e247378..0b65778 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -924,6 +924,8 @@ function drupal_check_profile($profile, array $install_state) {
   foreach ($info['dependencies'] as $module) {
     module_load_install($module);
     $function = $module . '_requirements';
+
+    drupal_classloader_register($module, drupal_get_path('module', $module));
     if (function_exists($function)) {
       $requirements = array_merge($requirements, $function('install'));
     }
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
index 64e1511..60e93fd 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
@@ -83,6 +83,11 @@ public static function open(array &$connection_options = array()) {
       // 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'] += [\PDO::MYSQL_ATTR_MULTI_STATEMENTS => FALSE];
+    }
 
     $pdo = new \PDO($dsn, $connection_options['username'], $connection_options['password'], $connection_options['pdo']);
 
@@ -110,8 +115,10 @@ public static function open(array &$connection_options = array()) {
     $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.
-    $pdo->exec(implode('; ', $connection_options['init_commands']));
+    // Execute initial commands.
+    foreach ($connection_options['init_commands'] as $sql) {
+      $pdo->exec($sql);
+    }
 
     return $pdo;
   }
diff --git a/core/modules/system/src/SystemRequirements.php b/core/modules/system/src/SystemRequirements.php
new file mode 100644
index 0000000..6bdd29d
--- /dev/null
+++ b/core/modules/system/src/SystemRequirements.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\SystemRequirements.
+ */
+
+namespace Drupal\system;
+
+/**
+ * Class for helper methods used for the system requirements.
+ */
+class SystemRequirements {
+
+  /**
+   * Determines whether the passed in PHP version disallows multiple statements.
+   *
+   * @param string $phpversion
+   *
+   * @return bool
+   */
+  public static function phpVersionWithPdoDisallowMultipleStatements($phpversion) {
+    return (version_compare($phpversion, '5.6.0') < 0 && version_compare($phpversion, '5.5.21') >= 0)
+      || version_compare($phpversion, '5.6.5') >= 0;
+  }
+
+}
diff --git a/core/modules/system/src/Tests/Database/ConnectionTest.php b/core/modules/system/src/Tests/Database/ConnectionTest.php
index c0d9253..d6fe5f9 100644
--- a/core/modules/system/src/Tests/Database/ConnectionTest.php
+++ b/core/modules/system/src/Tests/Database/ConnectionTest.php
@@ -118,4 +118,22 @@ function testConnectionOptions() {
     $this->assertNotEqual($connection_info['default']['database'], $connectionOptions['database'], 'The test connection info database does not match the current connection options database.');
   }
 
+  /**
+   * Ensure that you cannot execute multiple statements on phpversion() > 5.5.21 or > 5.6.5.
+   */
+  public function testMultipleStatementsForNewPhp() {
+    if (!defined('\PDO::MYSQL_ATTR_MULTI_STATEMENTS')) {
+      return;
+    }
+
+    $db = Database::getConnection('default', 'default');
+    try {
+      $db->query('SELECT * FROM {test}; SELECT * FROM {test_people}')->execute();
+      $this->fail('NO PDO exception thrown for multiple statements.');
+    }
+    catch (\Exception $e) {
+      $this->pass('PDO exception thrown for multiple statements.');
+    }
+  }
+
 }
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 4a8683e..b65d276 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -14,6 +14,7 @@
 use Drupal\Core\Site\Settings;
 use Drupal\Core\StreamWrapper\PrivateStream;
 use Drupal\Core\StreamWrapper\PublicStream;
+use Drupal\system\SystemRequirements;
 
 /**
  * Implements hook_requirements().
@@ -80,6 +81,17 @@ function system_requirements($phase) {
     return $requirements;
   }
 
+  // Suggest to update to at least 5.5.21 or 5.6.5 for disabling multiple
+  // statements.
+  if (!SystemRequirements::phpVersionWithPdoDisallowMultipleStatements($phpversion)) {
+    $requirements['php'] = array(
+      'title' => t('PHP (multiple statement disabling)'),
+      'value' => $phpversion,
+      'description' => t('PHP versions higher than 5.6.5 or 5.5.21 provides strengthening against SQL injections. Its recommended to update.'),
+      'severity' => REQUIREMENT_WARNING,
+    );
+  }
+
   // Test for PHP extensions.
   $requirements['php_extensions'] = array(
     'title' => t('PHP extensions'),
diff --git a/core/modules/system/tests/src/Unit/SystemRequirementsTest.php b/core/modules/system/tests/src/Unit/SystemRequirementsTest.php
new file mode 100644
index 0000000..8d547ea
--- /dev/null
+++ b/core/modules/system/tests/src/Unit/SystemRequirementsTest.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\system\Unit\SystemRequirementsTest.
+ */
+
+namespace Drupal\Tests\system\Unit;
+
+use Drupal\system\SystemRequirements;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @coversDefaultClass Drupal\system\SystemRequirements
+ */
+class SystemRequirementsTest extends UnitTestCase {
+
+  /**
+   * @dataProvider providerTestPhpVersionWithPdoDisallowMultipleStatements
+   */
+  public function testPhpVersionWithPdoDisallowMultipleStatements($version, $expected) {
+    $this->assertEquals($expected, SystemRequirements::phpVersionWithPdoDisallowMultipleStatements($version));
+  }
+
+  public function providerTestPhpVersionWithPdoDisallowMultipleStatements() {
+    $data = [];
+    $data[] = ['5.4.2', FALSE];
+    $data[] = ['5.4.21', FALSE];
+    $data[] = ['5.5.9', FALSE];
+    $data[] = ['5.5.20', FALSE];
+    $data[] = ['5.5.21', TRUE];
+    $data[] = ['5.5.30', TRUE];
+    $data[] = ['5.6.2', FALSE];
+    $data[] = ['5.6.5', TRUE];
+    $data[] = ['5.5.21', TRUE];
+    return $data;
+  }
+
+}
