2013-03-16 51 views
0
//Table One {news} 
Id1 | subject1 | url1 | source1 

//Table Two {blog_news} 
order_id | type | id1 | id 

//Table Three {blog} 
id | name | subject | url 

//SQL query 
SELCET nf.*, fnb.*, b.id, b.name, b.subject, b.url FROM news AS nf JOIN blog_news AS fnb ON nf.id1=fnb.id1 JOIN blog AS b ON fnb.id=b.id 
//Display Code 

if(($i = 0; $i <= 5; ++$i)&&(fnb.type' ==1)){ 

//Order the result by 'order_id' 

//Table Display Code 
<table> 
<tr> 
    <td width='250px' valign='middle' align='left'> 
    <font size='-2'> 
    <a herf='” . $_GET['b.url'] . “'> 
    <b>” . $_GET ['b.subject'] . “</b> 
    </a> 
    </font> 
    </td> 
    <td width='100px' valign='middle' align='right'> 
     <font size='-2'> 
     <a herf='” . $_GET['b.url'] . “'> 
     <b>” . $_GET ['b.name'] . “</b> 
     </a> 
     </font> 
    </td> 
    </tr> 
</table> 
}endif 

我试图完成的,是在两个领域使用类似于{//display}代码部分的代码连接三个数据库表一起,显示的结果是什么。连接三个表和显示信息在两个位置

我试过了可能用不同的方法来完成这个任务。
我试图在php中使用while循环来显示结果,并在while循环开始之前收到mysql_fetch_error()。我的目标是也有每张桌以DESC的顺序排列。

+0

如果你的问题是因为你的标题摘要,你需要认识到,MySQL的查询结果只是一个暂时的事情。从来没有一次保存超过1行,除非你a)缓冲结果(存储行数 - 例如存储数组),或者b)使用某些输出缓冲,否则不能返回到已经经历的行意味着,当你处理你的表格记录时,你会准备你想要在你的页面上看到较低的页面部分 - 例如。而不是'print $ row ['x'];''你会做'$ buffer。= $ row ['x'];'等待时间到了:'print $ buffer;'。 – Martina 2013-03-16 23:03:28

回答

0

在MySQL中组织数据要容易得多。

试试这个:

SELECT nf.*, fnb.*, b.id, b.name, b.subject, b.url 
FROM news nf 
    JOIN blog_news fnb ON nf.id1 = fnb.id1 
    JOIN blog b ON fnb.id = b.id 
WHERE fnb.type = 1 
ORDER BY fnb.order_id DESC 
LIMIT 5 

,并采取看看如何MySQL的ORDER BY作品。

如果您不知道如何在PHP中与MySQL进行接口,则可以在您最喜爱的搜索引擎上快速搜索“MySQL和PHP教程”。