Som nogen har foreslået, kan du bare tilpasse og bruge fuldtekstsøgning.
Hvis du vælger at tage denne rute, skal du aktivere fuldtekstsøgning i de felter, der skal bruges.
Jeg antager, at du vil tjekke post_title og post_body (?), hvilket kræver, at du kører dette;
ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);
Når det er gjort, kan din søgeforespørgsel nemt redigeres til at blive;
$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";
Hvis du gerne vil have bedre matchning, er det også muligt at give det en score og rækkefølge efter det, hvilket ville kræve kode svarende til denne:
$sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
"FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";
--- NOTER
Til søgningen skal du finde ud af, hvordan du vil søge.
I det sidste tilfælde jeg brugte lignende, havde jeg simpelthen en formular til søgetermen (Benævnt "Søg"), hvilket resulterede i, at $_POST['søg'] blev sendt til serveren.
Jeg brugte så;
$search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
if ($search) {
// Do the fulltext query requires (See above)
}
Da fuldtekstsøgning vil se bort fra bindestregen, står du tilbage med kun mellemrum, hvilket fungerer godt til fuldtekst, hvis du vælger at bruge scorede resultater.