random1 Posted October 12, 2010 Share Posted October 12, 2010 I have the code: SELECT `sid`, `sbody`, `stitle`, `sdescription` FROM `simple_search` WHERE `sbody` LIKE '%тествани test%' OR `stitle` LIKE '%тествани test%' OR `sdescription` LIKE '%тествани% test' ORDER BY `stitle`; It currently only return exact matches. How can I change it to match any term in the search text. e.g. If the search text is 'test only' it should return results that match 'test' or 'only' not just 'test only'. Any ideas? Quote Link to comment https://forums.phpfreaks.com/topic/215680-mysql-search-table/ Share on other sites More sharing options...
WilliamC Posted October 12, 2010 Share Posted October 12, 2010 You will likely want to do something like this: $ctr = 0; $matchcode = ''; $parts=array_map('trim',explode(' ',$keyword)); while(count($parts)>0){ $parts = array_reverse($parts); $part=array_pop($parts); $ctr++; if($ctr == 1){ $matchcode .= "`sbody` LIKE '%$part%' OR `stitle` LIKE '%$part%' OR `sdescription` LIKE '%$part%'"; } else { $matchcode .= " OR `sbody` LIKE '%$part%' OR `stitle` LIKE '%$part%' OR `sdescription` LIKE '%$part%'"; } } $sql = "SELECT `sid`, `sbody`, `stitle`, `sdescription` FROM `simple_search` WHERE " . $matchcode . " ORDER BY `stitle`"; Quote Link to comment https://forums.phpfreaks.com/topic/215680-mysql-search-table/#findComment-1121377 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.