Or even better : <? // ... $string = "Hello World"; $Fields = Array("Table.Field1", "Table.Field2", "Table.Field3"); $Op = $Type=="All" ? "AND" : "OR"; for( $i=0; $i<count($Fields); $i++ ) { $Field = $Fields[$i]; $Field = "CONCAT_WS('', ' ', TRIM($Field), ' ')"; $where .= "\n". ($i==0 ? "WHERE " : " $Op "); $where .= "("; $where .= "$Field LIKE '% ".(preg_replace("/[\s]+/", " %' $Op $Field LIKE '% ", $string))." %'"; $where .= ")"; } $sql = "SELECT ..."; $sql .= "\nFROM ..."; $sql .= $where; // ... ?> Try this : $string = "Hello World"; $TableName = "Table"; $FieldName = "Field"; $Field = "CONCAT_WS('', ' ', TRIM($TableName.$FieldName), ' ')"; $Op = $Type=="All" ? "AND" : "OR"; $where = "WHERE ($Field LIKE '% ".(preg_replace("/[\s]+/", " %' $Op $Field LIKE '% ", $string))." %')"; $sql = "SELECT * FROM Table ". $where; ----- Original Message ----- From: "Bruno Ferreira" <blueroom@xxxxxxxxxxxxxxxx> To: <php-db@xxxxxxxxxxxxx> Sent: Wednesday, April 21, 2004 3:46 PM Subject: Re: Multiple work mySql database search. Martin E. Koss wrote: >I have a product database which can be searched for a keyword in up to 3 >fields; using this select query: > >$sql_select = "SELECT * from productlist WHERE (Name LIKE >'%$SearchText%') OR (Description LIKE '%$SearchText%') OR (Keywords LIKE >'%$SearchText%') ORDER BY Name"; > >What I really want to achieve is if someone enters more than one work in >the search for, how can I get the select query to search for one, the >other, or both? > > WHERE (field LIKE '%word1%' OR field LIKE '%word2%' [etc etc]) > >I've thought of putting an option on the search for the user to select >'All Words' or 'Any Word' so that the select query could deal with the >search based on the full phrase they entered or any of the words. > >My problem is how to build the query. > > > Join them either with ANDs or ORs like this: Searching for all words in a field: WHERE (field LIKE '%something% AND field LIKE '%other_thing') Searching for any of the words in a field: [read above in the previous question] Bruno Ferreira --- [This E-mail scanned for viruses by Declude Virus] -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php