Fix #5276
diff --git a/system/database/drivers/mysqli/mysqli_result.php b/system/database/drivers/mysqli/mysqli_result.php
index 0b3d9c2..bd465c4 100644
--- a/system/database/drivers/mysqli/mysqli_result.php
+++ b/system/database/drivers/mysqli/mysqli_result.php
@@ -130,10 +130,10 @@
 	 * mysqli_result::fetch_fields()
 	 *
 	 * @used-by	CI_DB_mysqli_result::field_data()
-	 * @param	int	$flags
+	 * @param	int	$type
 	 * @return	string
 	 */
-	private static function _get_field_type($flags)
+	private static function _get_field_type($type)
 	{
 		static $map;
 		isset($map) OR $map = array(
@@ -164,15 +164,7 @@
 			MYSQLI_TYPE_GEOMETRY    => 'geometry'
 		);
 
-		foreach ($map as $flag => $name)
-		{
-			if ($flags & $flag)
-			{
-				return $name;
-			}
-		}
-
-		return $flags;
+		return isset($map[$type]) ? $map[$type] : $type;
 	}
 
 	// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysqli/mysqli_utility.php b/system/database/drivers/mysqli/mysqli_utility.php
index 1699b61..82cf5ce 100644
--- a/system/database/drivers/mysqli/mysqli_utility.php
+++ b/system/database/drivers/mysqli/mysqli_utility.php
@@ -155,11 +155,7 @@
 			while ($field = $query->result_id->fetch_field())
 			{
 				// Most versions of MySQL store timestamp as a string
-				$is_int[$i] = ($field->type & MYSQLI_TYPE_TINY)
-						OR ($field->type & MYSQLI_TYPE_SHORT)
-						OR ($field->type & MYSQLI_TYPE_INT24)
-						OR ($field->type & MYSQLI_TYPE_LONG)
-						OR ($field->type & MYSQLI_TYPE_LONGLONG);
+				$is_int[$i] = in_array($field->type, array(MYSQLI_TYPE_TINY, MYSQLI_TYPE_SHORT, MYSQLI_TYPE_INT24, MYSQLI_TYPE_LONG), TRUE);
 
 				// Create a string of field names
 				$field_str .= $this->db->escape_identifiers($field->name).', ';
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index b99a709..2dd77e3 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -7,6 +7,11 @@
 
 Release Date: Not Released
 
+Bug fixes for 3.1.7
+-------------------
+
+-  Fixed a regression (#5276) - :doc:`Database Utilities <database/utilities>` method ``backup()`` generated incorrect ``INSERT`` statements with the 'mysqli' driver.
+-  Fixed a regression where :doc:`Database Results <database/results>` method ``field_data()`` returned incorrect type names.
 
 Version 3.1.6
 =============