Add MySQL stricton changes to mysqli and pdo/mysql drivers
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index d9c1a98..607388a 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -84,7 +84,7 @@
 	 *
 	 * @var	bool
 	 */
-	public $stricton = FALSE;
+	public $stricton;
 
 	// --------------------------------------------------------------------
 
@@ -153,19 +153,18 @@
 			{
 				$this->simple_query('SET SESSION sql_mode = CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")');
 			}
-			else
+			elseif (version_compare($this->version, '5.7', '>='))
 			{
 				$this->simple_query(
 					'SET SESSION sql_mode =
-						REPLACE(
-							REPLACE(
-								REPLACE(@@sql_mode, "STRICT_ALL_TABLES,", ""),
-								",STRICT_ALL_TABLES",
-								""
-							),
-							"STRICT_ALL_TABLES",
-							""
-						)'
+					REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
+					@@sql_mode,
+					"STRICT_ALL_TABLES,", ""),
+					",STRICT_ALL_TABLES", ""),
+					"STRICT_ALL_TABLES", ""),
+					"STRICT_TRANS_TABLES,", ""),
+					",STRICT_TRANS_TABLES", ""),
+					"STRICT_TRANS_TABLES", "")'
 				);
 			}
 		}
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 3436682..f8694b9 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -84,7 +84,7 @@
 	 *
 	 * @var	bool
 	 */
-	public $stricton = FALSE;
+	public $stricton;
 
 	// --------------------------------------------------------------------
 
@@ -137,9 +137,26 @@
 
 		$this->_mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10);
 
-		if ($this->stricton)
+		if (isset($this->stricton))
 		{
-			$this->_mysqli->options(MYSQLI_INIT_COMMAND, 'SET SESSION sql_mode="STRICT_ALL_TABLES"');
+			if ($this->stricton)
+			{
+				$this->_mysqli->options(MYSQLI_INIT_COMMAND, 'SET SESSION sql_mode = CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")');
+			}
+			elseif (version_compare($this->version, '5.7', '>='))
+			{
+				$this->_mysqli->options(MYSQLI_INIT_COMMAND,
+					'SET SESSION sql_mode =
+					REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
+					@@sql_mode,
+					"STRICT_ALL_TABLES,", ""),
+					",STRICT_ALL_TABLES", ""),
+					"STRICT_ALL_TABLES", ""),
+					"STRICT_TRANS_TABLES,", ""),
+					",STRICT_TRANS_TABLES", ""),
+					"STRICT_TRANS_TABLES", "")'
+				);
+			}
 		}
 
 		if (is_array($this->encrypt))
diff --git a/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php b/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
index e9d25ce..2d8eac4 100644
--- a/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
+++ b/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php
@@ -73,7 +73,7 @@
 	 *
 	 * @var	bool
 	 */
-	public $stricton = FALSE;
+	public $stricton;
 
 	// --------------------------------------------------------------------
 
@@ -133,15 +133,34 @@
 				.(empty($this->dbcollat) ? '' : ' COLLATE '.$this->dbcollat);
 		}
 
-		if ($this->stricton)
+		if (isset($this->stricton))
 		{
-			if (empty($this->options[PDO::MYSQL_ATTR_INIT_COMMAND]))
+			if ($this->stricton)
 			{
-				$this->options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET SESSION sql_mode="STRICT_ALL_TABLES"';
+				$sql = 'CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")';
 			}
-			else
+			elseif (version_compare($this->version, '5.7', '>='))
 			{
-				$this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= ', @@session.sql_mode = "STRICT_ALL_TABLES"';
+				$sql = 'REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
+                                        @@sql_mode,
+                                        "STRICT_ALL_TABLES,", ""),
+                                        ",STRICT_ALL_TABLES", ""),
+                                        "STRICT_ALL_TABLES", ""),
+                                        "STRICT_TRANS_TABLES,", ""),
+                                        ",STRICT_TRANS_TABLES", ""),
+                                        "STRICT_TRANS_TABLES", "")';
+			}
+
+			if ( ! empty($sql))
+			{
+				if (empty($this->options[PDO::MYSQL_ATTR_INIT_COMMAND]))
+				{
+					$this->options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET SESSION sql_mode = '.$sql;
+				}
+				else
+				{
+					$this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= ', @@session.sql_mode = '.$sql;
+				}
 			}
 		}