Jak někdo navrhl, stačí se přizpůsobit a použít fulltextové vyhledávání.
Pokud se rozhodnete použít tuto trasu, budete muset povolit fulltextové vyhledávání v požadovaných polích.
Předpokládám, že zaškrtnete post_title a post_body (?), které vás ke spuštění potřebují;
ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);
Když to uděláte, váš vyhledávací dotaz lze snadno upravit tak, aby se stal;
$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";
Pokud byste chtěli lepší shodu, je také možné dát mu skóre a pořadí, což by vyžadovalo kód podobný tomuto:
$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";
--- POZNÁMKY
Pro hledání si musíte ujasnit, jak budete hledat.
V posledním případě, který jsem použil podobný, jsem měl jednoduše formulář pro hledaný výraz (pojmenovaný "Hledat"), jehož výsledkem bylo odeslání $_POST['search'] na server.
Potom jsem použil;
$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)
}
Vzhledem k tomu, že fulltextové vyhledávání bude ignorovat pomlčku, zbydou vám pouze mezery, což funguje skvěle pro fulltext, pokud se rozhodnete používat bodované výsledky.