我有2个表,第一个是tblactive(ac_id,ac_title,ac_text),第二个是tblnews(n_id,n_title,n_text)
我还有3个文件
Active.php(在此文件中,我从表中获取数据并通过函数displayac显示,例如<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>
)
News.php(在此文件中,我从表新闻中获取数据,并通过函数displaynews显示,例如<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>
)
问题
Search.php(在这个文件中我想搜索(如同2个表中的n_text的ac_text和searchword,同时显示活动和新闻),并显示包含原始文件链接的搜索结果,例如
这是我的查询
$result ="(select n_title,n_text, n_id from tblnews where n_text LIKE '%$searchword%')
union
(select ac_title,ac_text, ac_id from tblactive where ac_text LIKE '%$searchword%') limit $page, $perpage";
$query=mysql_query($result);
如果在ac_text列中找到搜索词,则链接将为<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>
如果在n_text列中找到了searchword,则该链接将为<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>
答案 0 :(得分:0)
Union不会告诉您数据来自哪个表,因此将查询操作为
(select n_title,'n' as wchtab, n_text, n_id from tblnews where n_text LIKE '%e%')
union
(select ac_title,'a' as wchtab, ac_text, ac_id from tblactive where ac_text LIKE '%e%')
其中'wchtab'告诉您数据来自哪个表,现在您可以在获取记录时检查
while ($row = mysql_fetch_assoc($result)) {
if($row['wchtab'] == 'n'){
$n_title = $row['N_TITLE'];
$n_id = $row['N_ID'];
echo "<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>"
}
else if($row['wchtab'] == 'a'){
$ac_title = $row['N_TITLE'];
$a_id = $row['N_ID'];
echo "<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>";
}
注意,当您使用union时,您将获得列的标题作为第一个表名列字段,因此您不会单独获取ac_title,但是列n_title将保存ac_title和wchtab的数据告诉你数据来自哪个表格。 }