Php 搜索具有不同列的多个表

Php 搜索具有不同列的多个表,php,mysql,database,search,Php,Mysql,Database,Search,我想为我的网站建立一个搜索引擎。我的数据库表列表如下: d_name:我需要搜索两列 em:我需要搜索一列 seri:我需要搜索一列 主题:我需要搜索一列 许多其他表格的数量是动态的,列表包含在d_name表格的一列中。我需要在每个表上搜索两列 由于结果的数量可能很大,我也需要进行分页。 正如我所知,为了在多个表上使用分页搜索,我应该使用UNION,但首先,列的数量应该相同,但这里不是,而且我的表的数量是动态的 另一方面,如果我尝试使用SHOW TABLES,它也会搜索一些包含我的私人信息的其他

我想为我的网站建立一个搜索引擎。我的数据库表列表如下:

  • d_name
    :我需要搜索两列
  • em
    :我需要搜索一列
  • seri
    :我需要搜索一列
  • 主题
    :我需要搜索一列
  • 许多其他表格的数量是动态的,列表包含在
    d_name
    表格的一列中。我需要在每个表上搜索两列
  • 由于结果的数量可能很大,我也需要进行分页。
    正如我所知,为了在多个表上使用分页搜索,我应该使用
    UNION
    ,但首先,列的数量应该相同,但这里不是,而且我的表的数量是动态的

    另一方面,如果我尝试使用
    SHOW TABLES
    ,它也会搜索一些包含我的私人信息的其他表

    这就是我迄今为止所做的:

            $query = "(SELECT d_name, doc, db_name AS d FROM d_name WHERE d_name LIKE '%" . 
               $keyword . "%' OR title LIKE '%" . $keyword ."%') 
               UNION
               (SELECT em_name, db_name AS em FROM em WHERE em_name LIKE '%" . 
               $keyword . "%') 
               UNION
               (SELECT name AS topic FROM topics WHERE name LIKE '%" . 
               $keyword . "%')
               UNION
               (SELECT seri_name, db_name AS seri FROM seri WHERE seri_name LIKE '%" . 
               $keyword . "%')";
    

    但是,
    联合
    不起作用!有人知道我该怎么做吗?

    如果执行联合查询,则所有单独的查询在结果中应具有相同的列数。您可以使用固定值,如
    NULL
    '
    'not provided'
    来填充其他表格

    Examlpe查询()


    你有没有试着在同一个平台上做点什么?请首先开始尝试,至少展示一下你到目前为止做了什么。Stackoverflow会在你做某事时遇到问题时提供帮助。这是你的意思吗?
    SELECT column_1, column_2 FROM i_have_two_columns
    UNION
    SELECT column_1, NULL FROM i_have_only_one_column