例如,如果我在文本字段中搜索#pumpkins
,则应返回包含#pumpkins
的所有记录。我不确定要使用哪些MySQL函数。目标是复制Twitter搜索功能,用户可以搜索任何主题标签,并返回包含主题标签的所有帖子(推文)。起初,我认为使用LOCATE()
和SUBSTRING()
函数就足够了,但在做了一些研究后我不太确定。
$getHT = "SELECT `post`, `author`, `date`, `id`, `subid`
FROM `posts` WHERE SUBSTRING(post, LOCATE('$q', post)+7,
LOCATE('$q', post) - LOCATE('$q', post) - 7) LIKE '%$q%' ORDER BY `date` DESC LIMIT 7";
$seaHT = $con->query($getHT); //Search Hashtags: seaHT
foreach ($seaHT->fetchAll() as $hshtag) {
echo '<li><div class="postContent">'. $hshtag['post'] .'</div></li>';
}
我尝试使用预先存在的代码,但到目前为止无济于事。使用REGEX()
函数会更好地解决我想要实现的问题吗?
更新:另一个例子:
-User搜索#candy posts表中的Posts列包含以下记录
1 - “#Candy很甜蜜”
2-“比萨很美味”
3-“糖果对你不好”4-“我#love #candy”
-Query只返回 记录1和4。
仅使用LIKE
('%$ q%)返回所有内容,或者如果我设置限制并订购结果,则返回最后7个帖子。
$query = $_GET['q'];
$q = str_replace('#', '%23', $query);
$getHT = "SELECT `post`, `author`, `date`, `id`, `subid`
FROM `posts` WHERE `post` LIKE '%$query%' AND LENGTH('$q') > 0 ORDER BY `date` DESC LIMIT 7";