You can use explode/split functions on the search parameters - that will
give u an array with each search token indexed individually. Suppose the
search input was 'abc xyz'

$strsearch = "abc xyz";

$search=explode(" ",$strsearch);

your array "search" will contain


Now, you can iterate through the array members and create a SQL string out
of it, join the elements with "LIKE" and "AND".

so that you have something like

SELECT * FROM whatevertable WHERE whatevercolumn LIKE '%$search[0]% AND
whatevercolumn LIKE '%$search[1]%

Since you won't know how many search input 'tokens' will be searched on: Use
a loop to create the SQL statement. You can also use the implode() function
to create the SQL.

Textual searches can be optimised somewhat by creating the appropriate
indexes (refer to the MySQL manual).


-----Original Message-----
t]On Behalf Of Paul Maine
Sent: Sunday, July 28, 2002 8:02 AM
Subject: [PHP] PHP/MySQL Search Engine Query Question

I am currently working on a website that is implemented using PHP and MySQL.

The site currently has a simple search engine that allows a shopper to type
in a search string that is stored in $search. For example, if a shopper
types in 1972 Ford Mustang
$string ="1972 Ford Mustang"

Using the following SQL statement:
SELECT * FROM whatevertable WHERE whatevercolumn LIKE '%$search%

Records are returned that have this exact string and in this exact order
(I'm aware a wild card character is included on the front and back of the

My desire is to be able to logically AND each token of the search together
independent or the order of the tokens.
I want to return all records that have Mustang AND 1972 AND Ford.

Since a shopper inputs the search string in advance I don't know how many
tokens will be used.

I would appreciate any suggestions.


PHP General Mailing List (
To unsubscribe, visit:

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to