я бы делал через полнотекстовой поиск, т.к. можно отсортировать по релевантности
if(!empty($Search)){
$arrWHEREs=array();
$Searchs=preg_split('/\s+/',$Search,-1,PREG_SPLIT_NO_EMPTY);
for($i=0,$s=sizeof($Searchs);$i<$s;$i++){
// if(mb_strlen($Searchs[$i])<2)continue; // раскомментировать если не нужны слова менее 2х символов пример: 'маша и петя' - 'и' не войдет в выборку
$arrWHEREs=array_merge($arrWHEREs,array
(
" name LIKE ('%{$Searchs[$i]}%')",
" address LIKE ('%{$Searchs[$i]}%')",
" description LIKE ('%{$Searchs[$i]}%')",
" link LIKE ('%{$Searchs[$i]}%')",
" vlink LIKE ('%{$Searchs[$i]}%')",
" email LIKE ('%{$Searchs[$i]}%')",
" type LIKE ('%{$Searchs[$i]}%')",
" age LIKE ('%{$Searchs[$i]}%')",
" gender LIKE ('%{$Searchs[$i]}%')",
" price LIKE ('%{$Searchs[$i]}%')",
" date LIKE ('%{$Searchs[$i]}%')",
));
}
$search=" ( ".implode(" or ", $arrWHEREs)." ) ";
}else $search="";
что там у вас в защите от xss и обеспечивает ли та защита защиту от sqlinj я хз.