1

我正在我的网站上进行搜索,我想从数据库中选择包含用户搜索的单词(或单词)的帖子。我正在使用下面的代码并且它有效,但是由于我使用的是 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

4 回答 4

3

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

"SELECT * FROM posts WHERE post_body LIKE ( '%".$search."%' ) ORDER BY id DESC LIMIT 10"
于 2013-03-15T18:02:08.607 回答
1

第一:不要使用 mysql_ - 它已被弃用,出于安全原因正在逐步淘汰。请改用 mysqli_。

第二:使用“喜欢”这样做:

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

'keyword searches are fun'将在也'Find this keyword'和的数据值中找到匹配项'all keywords are words.'

于 2013-03-15T18:07:39.657 回答
0

您可以利用LIKE来进行此搜索。

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

post_body将是存储帖子内容的任何文件,?并将被您的搜索字符串替换。

于 2013-03-15T18:03:19.870 回答
0

您可以将其用作查询:

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

不过,这可能非常有限且缓慢。根据您的应用程序有多大以及您拥有多少数据,您可能希望提供“全文搜索”。 全文检索

于 2013-03-15T18:04:24.193 回答