Search code examples
coldfusioncfmlcfquery

getting an extra OR before the search


I have this query and i m am getting an extra OR after the AND clause and the search is failing

<cfset CountVar = 1>
        <cfquery name="qFiltered">
            SELECT id,name,email,useris,roleid
            FROM users
            WHERE 1=1
                <cfif search NEQ "">
                    AND (
                        <cfloop list="#aColumnArray#" index="sSearch">
                            <cfif CountVar NEQ countOfColumns> OR </cfif> 
                            #sSearch# LIKE <cfqueryparam value="%#search#%" cfsqltype="cf_sql_varchar" />
                            <cfset CountVar += 1>
                        </cfloop>
                    )
                </cfif>
            
        </cfquery>

Something is wrong in the counter where it is not validating the number of countofColumns

<cfset var countOfColumns = listLen(aColumnArray)>

Solution

  • How about this

     <cfquery name="qFiltered">
            SELECT id,name,email,useris,roleid
            FROM users
            WHERE 1 = 1
            <cfif search NEQ "">
                AND (
                    0 = 1 
                    <cfloop list="#aColumnArray#" index="sSearch">
                       OR 
                       [#sSearch#] LIKE <cfqueryparam value="%#search#%" cfsqltype="cf_sql_varchar" />
                    </cfloop>
                  )
            </cfif>
      </cfquery>