anchor.diff:  
   
   	</cfscript>
  -
  -
  -
  -
   
   	<cffunction name="read" hint="I read from the database. I take either a tablename or sql statement as a parameter." returntype="any" output="false">
   		<cfargument name="sql" required="false" type="string" default="" hint="Either a tablename or full SQL statement.">
  
positive.code: 			}
  			return this;
  		}
  
  		function andWhere( required string column, required string operator, required string value ){
  			return _appendToWhere( andOr = "AND", column = column, operator = operator, value = value );
  		}
  
  		function orWhere( required string column, required string operator, required string value ){
  			return _appendToWhere( andOr = "OR", column = column, operator = operator, value = value );
  		}
  
  		/**
  		* Opens a parenthesis claus.  Operator should be AND or OR
  		* If "AND" is passed, it will return AND (
  		* Must be closed by endGroup()
  		**/
  		function beginGroup( string operator = "AND"){
  
  			arrayAppend( _criteria.where, "#operator# ( " );
  			return this;
  		}
  		/**
  		* Ends the group.  All this really does is append a closing
  		* parenthesis
  		**/
  		function endGroup(){
  
  			arrayAppend( _criteria.where, " )" );
  			return this;
  		}
  
  		function orderBy( required string orderBy ){
  
  			_criteria.orderBy = orderBy;
  			return this;
  		}
  
  		function limit( required any limit ){
  
  			_criteria.limit = arguments.limit;
  			return this;
  		}
  
  		function run(){
  			return read( table = _criteria.from, where = arrayToList( _criteria.where, ' ' ), limit = _criteria.limit, orderBy = _criteria.orderBy );
  
  		}
  
  		function getCriteria(){
  			return _criteria;
  		}
  
  		/**
  
negative.code: 					tmpString = deSerializeJSON( "{" & arrayToList( tmpArr ) & "}" );
  
  					// finally we can evaluate the queryParam struct.  This will scrub the values (i.e. proper cfsql types, prevent sql injection, etc...).
  					evalString = queryParamStruct(
  													value = structKeyExists( tmpString, 'value' ) ? tmpString.value : '',
  													cfsqltype = structKeyExists( tmpString, 'cfsqltype' ) ? tmpString.cfsqltype : '',
  													list= structKeyExists( tmpString, 'list' ) ? tmpString.list : false,
  