2013-12-18 43 views
0

用于辩论和注释的数据库表是相同的。看来$ title和$ date不起作用。我怎样才能从两者中获取信息,并按日期排序?mysql接收并比较来自多个表的数据

<?php 
$showwall = mysql_query("(SELECT * FROM debat WHERE user='$user') UNION (SELECT * FROM comments WHERE user='$user') ORDER BY date LIMIT 0, 25"); 
$results = array(); 
while($wall = mysql_fetch_array($showwall, MYSQL_ASSOC)){ // Line 21 
$results[] = $wall; 

<li class="comment"> 
<div class="comment"> 
    <div class="comment-author vcard user frame"> 
<?php echo "<a href=view.php?action=view&ID=".$wall['ID']."><img src=images/avatar/".$select['avatar']." class=avatar avatar-70 photo height=70 width=70 /></a>"; ?> 
    </div> 
    <div class="message"> 
    <span class="reply-link"><?php echo "<a href=view.php?action=edit&ID=".$wall['ID'].">"; ?> Edit </a></span> 

<div class="info"> 
<h2><?php echo $wall['title']; ?></h2> 
<span class="meta"> 
<?php 
$date->setTimestamp($wall['date']); 
echo "Dato: "; 
echo $date->format('d-m-Y') . "\n"; 
echo "Kl: "; 
echo $date->format('H:i:s') . "\n"; 
?> 
</span> 
</div> 
     <div class="comment-body "> 
     <p><?php echo $wall['comment']; ?></p> 
     </div> 
    </div> 
</div> 
</li> 

<?php } ?> 

我想添加另一个数据库加载,似乎留下一个空白的结果。

$showwall = @mysql_query("(SELECT * FROM debat WHERE user='$user') UNION (SELECT * FROM comments WHERE user='$user') UNION (SELECT * FROM nyheder WHERE user='$user') ORDER BY date LIMIT 0, 25"); 

数据库包含具有相同名称的表,但其中一些具有比其他字段更多的字段。所以这不是正确的做法吗?

+2

开始通过去除所有@误差抑制 – 2013-12-18 18:02:00

+0

警告:mysql_fetch_array()预计参数1是资源,在布尔的public_html/wall.php给出在第17行 第17行:而($壁= mysql_fetch_array($ showwall) ){?> – Kingfox

+0

querry失败,调试thtat – 2013-12-18 18:14:49

回答

1
$showwall = @mysql_query("(SELECT * FROM debat WHERE user='$user') UNION (SELECT * FROM comments WHERE user='$user') UNION (SELECT * FROM nyheder WHERE user='$user') ORDER BY date LIMIT 0, 25") 

正如在评论中提到的那样,@将抑制错误消息;那些是有原因的。你也没有检查结果 - 添加or die (mysql_error())会给你从数据库中的错误消息。

在这种情况下,问题在于您使用的是UNION。这只有在所有表格都有相同顺序的列时才有效,我怀疑事实并非如此。我想,你只需要一个简单的JOIN:

SELECT * FROM debat d 
    INNER JOIN comments c ON d.user=c.user 
    INNER JOIN nyheder n ON d.user=n.user 
WHERE d.user='$user' 

最后一个音符 - 你正在使用mysql_ *功能,正在从PHP中删除。您应该考虑转而使用mysqli_ *或PDO - 它们都可以让您更轻松地编写更安全的代码。