如何从包含特定单词的数据库中选择帖子?

时间:2013-03-15 17:59:31

标签: php sql

我正在我的网站上搜索,我想从数据库中选择包含用户搜索的单词(或单词)的帖子。 我正在使用下面的代码并且它有效,但由于我使用LIMIT 10,可能会发生在10个选定的帖子中,例如,只有2个帖子包含搜索的单词,因此只显示2个帖子,即使有数据库中包含搜索词的更多帖子。

$posts = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 10");
while($posts_row = mysql_fetch_assoc($posts )) {
...
$post_body = $posts_row ['post_body'];
if (strstr($post_body, $search)) {
 echo $post_body;
}
...
}

有没有办法只从包含搜索字词的数据库中选择帖子? 像

这样的东西
$posts = mysql_query("SELECT * FROM posts WHERE strstr($post_body, $search) ORDER BY id DESC LIMIT 10");
编辑:感谢您的帮助和建议。

4 个答案:

答案 0 :(得分:3)

试试这个(在MySQL中测试,我不确定其他人):

"SELECT * FROM posts WHERE post_body LIKE ( '%".$search."%' ) ORDER BY id DESC LIMIT 10"

答案 1 :(得分:1)

首先:不要使用mysql_ - 它已被弃用,并且出于安全原因正逐步淘汰。请改用mysqli_。

第二:使用'like'来做到这一点:

SELECT * FROM tableName WHERE columnName LIKE '%keyword%';

将在'keyword searches are fun' 'Find this keyword''all keywords are words.'

的数据值中找到匹配项

答案 2 :(得分:0)

您可以使用LIKE进行此搜索。

SELECT * FROM posts WHERE post_body LIKE ('%?%') ORDER BY id DESC LIMIT 10;

此处post_body将为帖子内容存储任何内容,?将替换为您的搜索字符串。

答案 3 :(得分:0)

您可以将其用作查询:

SELECT * FROM posts WHERE $post_body like '%$search%' ORDER BY id DESC LIMIT 10

这可能是非常有限和缓慢的。根据您的应用程序的大小和您拥有的数据量,您可能希望提供“全文搜索”。 Full-Text Search