RE: [PHP-DB] Multiple work mySql database search.
| From: | Uzi Klein | Date: | Wed, 21 Apr 2004 19:08:22 +0000 |
| Subject: | RE: [PHP-DB] Multiple work mySql database search. | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-34016@lists.php.net to get a copy of this message | ||
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@digitalmente.net>
To: <php-db@lists.php.net>
Sent: Wednesday, April 21, 2004 3:46 PM
Subject: Re: [PHP-DB] 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