我想为我的网站建立一个搜索引擎。我的数据库表列表如下:
d_name
:我需要搜索两个列。em
:我需要搜索一个列。seri
:我需要搜索一个列。topics
:我需要搜索一个列。d_name
表的列中。我需要在每个表上搜索两个列。由于结果数量可能很大,我也需要进行分页
据我所知,我应该使用UNION
来对多个表进行搜索时使用分页,但首先,列数应该相同,但这里不是,而且我的表的数量也是动态的。 / p>
另一方面,如果我尝试使用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 . "%')";
但UNION
不起作用!有人知道我该怎么做吗?
答案 0 :(得分:0)
如果执行UNION查询,则所有单独的查询在结果中应具有相同的列数。您可以使用NULL
,''
或'not provided'
等固定值来填充其他表格。
Examlpe-query(demo)
SELECT column_1, column_2 FROM i_have_two_columns
UNION
SELECT column_1, NULL FROM i_have_only_one_column