【发布时间】:2014-06-08 13:55:56
【问题描述】:
背景
网站上的用户可以为他们的个人资料提供“关键字”,每个关键字用“,”分隔。例如:
green apples, bananas, red apples, pears
这是作为字符串存储在数据库中的。
我有一个实时搜索页面,用户可以在其中按关键字搜索用户。在此搜索中,页面会在用户键入时建议关键字。例如,用户可以键入:
apples
页面会提示
green apples, red apples.
方法
当输入发送到keywordsearch.php时,页面会搜索以下内容:
$search_string_w = '%'.$search_string.'%';
$stmt = $dbh->prepare('SELECT `keywords` FROM `users` WHERE `keywords` LIKE ?');
$stmt->execute(array($search_string_w));
while($results = $stmt->fetch(PDO::FETCH_ASSOC)) {
$result_array[] = $results;
}
这将获取拥有关键字的用户所在的行。但是,我想做的只是将每个单独的关键字显示为搜索建议,即使该关键字出现多次。
if (isset($result_array)) {
foreach ($result_array as $result) {
$keyw = explode(', ', $result['keywords']);
$keyk = array_search($search_string, $keyw);
现在,$keyw[$keyk] 将返回一个关键字。因此,如果搜索的是apples,则只会返回green apples 而不会返回red apples。
问题
如何更改此代码以返回所有出现的搜索词?
【问题讨论】:
标签: php mysql sql arrays search