New Bie
New Bie

Reputation: 105

Search Each Word Of a Search Using PHP MYSQL Search Query


I want to fetching Records On the Basis Of Entered Keywords in the Search Bar.
Suppose I have Below 3 Records in My SQL Table's Column

  1. Beautiful Small Kid.
  2. Beautiful Rabbit in the Zoo.
  3. Natural Water.

Now, If the Search Query contains Beautiful, It will Return First 2 Records.
If the Search Query contains Beautiful (anything), It will Return Nothing.

I want those First 2 Records to be Displayed in this case too, Because It has the same word beautiful like in above searched Query.

Right Now, I am Using
SELECT * FROM table WHERE name LIKE '%value%' ORDER BY id ASC

Is there any Other Query or Method to Achieve Such Sort Of Results ?

Upvotes: 1

Views: 2360

Answers (1)

Stuart
Stuart

Reputation: 146

SELECT * FROM table WHERE (name LIKE '%value1%') OR (name LIKE '%value2%') ORDER BY id ASC

etc

So, you would have to split up your search string into separate words.

$str = yourinput;
$strarray = (explode(" ",$str));
$query = "SELECT * FROM table WHERE ";
Foreach($strarray as $key=>$value){
If($key > 0){
$query = $query . "OR";
}
$query = $query . " (name LIKE '%" . $value . "%') ";
}
$query = $query . "ORDER BY id ASC";

Upvotes: 3

Related Questions