我在使用UNION ALL时将sql查询的结果作为链接回显时遇到问题。
表格如下:
表:帖子
id用户名日期评论表:文件
id用户名日期文件
“文件”行包含上传文件的网址。
我显示结果的代码:
<?php
$sql="SELECT * FROM posts
UNION ALL
SELECT * FROM files
ORDER BY date DESC LIMIT 100";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
?>
<div> <?php echo $rows['comment']; ?> </div>
<div> <a href="<?php echo $rows['file']; ?>"><?php echo $rows['file']; ?></a> </div>
<?php
}
?>
现在一切都按正确的顺序排序,但文件名不会显示为链接,只显示纯文本。 没有问题,如果我只在文件表上运行查询,则回显链接。
我想最大的问题是:如何将UNION ALL查询的结果显示为链接?
答案 0 :(得分:2)
当您执行UNION查询时,将合并列意味着您的comment
和file
列将相同,其结果集名称将为comment
(第一个选择语句) 。见http://dev.mysql.com/doc/refman/5.0/en/union.html
我更倾向于使用两个单独的查询,一个针对posts
表,第二个针对files
。
答案 1 :(得分:0)
如果你有帖子表
1 2012-03-26 "a comment"
2 2012-03-26 "another comment"
并在文件表中:
1 2012-03-26 "./myfile/txt"
2 2012-03-26 "./ico.gif"
工会将全部:
ID Date Comment/file
1 2012-03-26 "a comment"
1 2012-03-26 "./myfile/txt"
2 2012-03-26 "another comment"
2 2012-03-26 "./ico.gif"
(订单没有保证)
因此,如果你尝试为每一行pr一个带有注释的div和一个带有文件作为链接的div,这将不起作用。在你的情况下,似乎只显示注释div(因为查询结果行名必须是注释)
但是,如果您想要实现的目标可以使用如上所述的连接来完成。 如果帖子ID匹配具有相同ID的文件行
,则可以是这样SELECT p.comment comment f.file file FROM posts p
INNER JOIN files f ON f.id = p.id
结果将是:
comment file
"a comment" "./myfile/txt"
"another comment" "ico.gif"
此致