Fix where() with literal multiple conditions
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index ac8ff48..4959284 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -2056,25 +2056,36 @@
 					continue;
 				}
 
-				$op = preg_quote($this->_get_operator($this->{$qb_key}[$i]['condition']));
-				if ( ! preg_match('/^(\s*(?:AND|OR)\s+)?(\(?)(.*)('.$op.')(.*(?<!\)))?(\)?)$/i', $this->{$qb_key}[$i]['condition'], $matches))
+				// Split multiple conditions
+				$conditions = preg_split(
+					'/(\s*AND\s+|\s*OR\s+)/i',
+					$this->{$qb_key}[$i]['condition'],
+					-1,
+					PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
+				);
+
+				for ($ci = 0, $cc = count($conditions); $ci < $cc; $ci++)
 				{
-					$this->{$qb_key}[$i] = $this->{$qb_key}[$i]['condition'];
-					continue;
+					if (($op = $this->_get_operator($conditions[$ci])) === FALSE
+						OR ! preg_match('/^(\(?)(.*)('.preg_quote($op).')(.*(?<!\)))?(\)?)$/i', $conditions[$ci], $matches))
+					{
+						continue;
+					}
+
+					// $matches = array(
+					//	0 => '(test <= foo)',	/* the whole thing */
+					//	1 => '(',		/* optional */
+					//	2 => 'test',		/* the field name */
+					//	3 => ' <= ',		/* $op */
+					//	4 => 'foo',		/* optional, if $op is e.g. 'IS NULL' */
+					//	5 => ')'		/* optional */
+					// );
+					empty($matches[4]) OR $matches[4] = ' '.$this->protect_identifiers(trim($matches[4]));
+					$conditions[$ci] = $matches[1].$this->protect_identifiers(trim($matches[2]))
+						.' '.trim($matches[3]).$matches[4].$matches[5];
 				}
 
-				// $matches = array(
-				//	0 => 'OR (test <= foo)',	/* the whole thing */
-				//	1 => 'OR ',			/* optional */
-				//	2 => '(',			/* optional */
-				//	3 => 'test',			/* the field name */
-				//	4 => ' <= ',			/* $op */
-				//	5 => 'foo',			/* optional, if $op is e.g. 'IS NULL' */
-				//	6 => ')'			/* optional */
-				// );
-				empty($matches[5]) OR $matches[5] = ' '.$this->protect_identifiers(trim($matches[5]));
-				$this->{$qb_key}[$i] = $matches[1].$matches[2].$this->protect_identifiers(trim($matches[3]))
-						.' '.trim($matches[4]).$matches[5].$matches[6];
+				$this->{$qb_key}[$i] = implode('', $conditions);
 			}
 
 			return ($qb_key === 'qb_having' ? "\nHAVING " : "\nWHERE ")