搜索页面引擎PHP与MYSQL数据库?

发布于 2024-11-18 06:54:48 字数 589 浏览 1 评论 0原文

我将概括这个问题,以便其他人可以使用答案。
假设我有一个由 MYSQL 数据库驱动的网站。
数据库包含 5 个表:事件、新闻、书籍、文章、提示
每个表格都有 2 个我想要搜索的字段标题详细信息
在网站的每个页面上都有一个搜索表单(文本字段和按钮)。
输入单词或短语后,我希望重定向到名为“搜索”的页面,在该页面中我应该看到结果作为列表,其中包含来自整个数据库的链接。
例如
书 X(链接到数据库中找到的书)
事件 Y
文章 Z

帮助: 表是 INNODB 引擎,因此全文搜索也不起作用,我在构建 SELECT 语句以使用 LIKE 从多个表中搜索多个字段时遇到了麻烦。我已经成功使用一张表,但使用多个表和多个字段时,我会收到错误或在某些情况下没有数据或重复数据。请对此 Select 语句提供一些帮助。

问题:如何为 MYSQL 数据库中的所有表构建搜索引擎?一些 SQL 注入或其他黑客攻击预防建议也将受到赞赏。

I'm going to generalize this question so that other people can use the answers.
Let's say I have a website driven by a MYSQL database.
Database contains 5 tables:events,news,books,articles,tips.
Every table has among others 2 fields Title and Details in which I want to search
On every page of the site I have a search form (text field and button).
After I type a word or phrase I want to be redirected to a page called search where I should see the results as a list with links from the entire database.
e.g.
Book X (link on it to the book found in the database)
Event Y
Article Z

HELP: The tables are INNODB ENGINE so full text search didn't work also I'm having trouble in building a SELECT statement for searching multiple fields from multiple tables with LIKE. I've succeded with one table but with multiple tables and multiple fields I'm getting error or no data or duplicated data in some cases. Some help with this Select statement please.

Question: How do I build a search engine for all the tables in my MYSQL DB? Some SQL injection or other hacking prevention advice would be appreciated also.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妳是的陽光 2024-11-25 06:54:48

我对这种情况的处理方法是基于所有具有相似列(我们只需要搜索的列)的表和一个带有表名/实体名称(书籍、事件等)的别名列创建一个视图,

它应该看起来像这样

EntityName      Title     Details
Books            xxxx      xxxxx
...............................

我我没有解释如何使用 union 创建视图(如果不希望出现重复,请勿使用 Union All)。

下一站将使用类似语句进行搜索

select * from vwSearchData where Title like '%keyword' or details like '%keyword'

下一步是显示数据及其实体名称。

当然,您需要通过从搜索表单中过滤 html 实体来获取关键字。

My Approach to the situation is create a view based on all the tables with similar columns ( columns which we need to search only) and one more alias column with their table names/ entity name (Books, event etc)

It should look like this

EntityName      Title     Details
Books            xxxx      xxxxx
...............................

I am not explaining how to create views with union (dont use Union All if not expecting duplicates).

The next stop would be search using like statements

select * from vwSearchData where Title like '%keyword' or details like '%keyword'

Next step is to display the data along with their entity names.

Ofcourse, you need to get the keyword by filtering with html entities from the search form.

半世蒼涼 2024-11-25 06:54:48

您可以使用 UNION:

(SELECT * FROM events WHERE title LIKE '$key' OR details LIKE '$key')  
UNION  
(SELECT * FROM news WHERE title LIKE '$key' OR details LIKE '$key')

等。

You can use UNION:

(SELECT * FROM events WHERE title LIKE '$key' OR details LIKE '$key')  
UNION  
(SELECT * FROM news WHERE title LIKE '$key' OR details LIKE '$key')

and so on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文