PHP MySQL:使用关键字进行多表搜索
使用关键字从 MySQL 数据库中的多个表中查找结果可能是一个挑战。在本文中,我们解决了从三个单独的内容中搜索“messages.content”、“messages.title”、“topics.content”、“topics.title”、“comments.content”和“comments.title”的问题使用“LIKE”运算符的表(“消息”、“主题”和“评论”)。
多表搜索查询:
执行跨多个表进行搜索,我们可以使用 UNION 运算符。以下查询组合了每个表的结果:
$query = "(SELECT content, title, 'msg' as type FROM messages WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%') UNION (SELECT content, title, 'topic' as type FROM topics WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%') UNION (SELECT content, title, 'comment' as type FROM comments WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%')"; mysql_query($query);
识别结果的表来源:
一旦获得结果,我们需要一种方法来确定每行源自的表。为此,我们在每一行中添加了一个“type”列,指示表名称(“msg”表示“messages”,“topic”表示“topics”,“comment”表示“comments”)。执行查询后,可以根据“type”列访问结果并对其进行排序,以将行与特定表隔离。
用法示例:
假设我们有一个关键字“example”并且想要查找所有匹配的结果。多表搜索将返回关键字出现在三个表中任意一个的“内容”或“标题”字段中的所有行。然后,我们可以使用“类型”列对每个表进行分组并分别显示结果。
以上是如何在 PHP 和 MySQL 中执行基于关键字的多表搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!