2012-02-06 147 views
0

我有下面的代码,它可以正常工作,但是现在我想(如果可能)添加第三个select语句来收集更多信息并在while循环中返回它作为$ row2。 有没有什么办法可以做到这一点,或者我将不得不彻底重组我的代码才能使它工作?PHP MySQL - 在循环中返回多个选择查询

任何帮助或指导将受到感谢。当前的代码如下:

mysql_select_db("jbsrint", $con); 
$result = mysql_query("SELECT *, DATE_FORMAT(Date_Registered, '%d-%m-%Y') AS Date_Registered, DATE_FORMAT(Date_Last_MOT, '%d-%m-%Y') AS Date_Last_MOT,  DATE_FORMAT(Date_Last_Tax, '%d-%m-%Y') AS Date_Last_Tax FROM Veh_List ORDER BY ID DESC"); 
$DUE_DATES = mysql_query("SELECT *, DATE_FORMAT(MOT_DUE_DATE, '%d-%m-%Y') AS MOT_DUE_DATE, DATE_FORMAT(Date_Tax_Due, '%d-%m-%Y') AS Date_Tax_Due FROM due_dates ORDER BY ID DESC"); 
echo "<table border='1'> 
<tr> 
<th>Vehicle Reg</th> 
<th>Vehicle Make</th> 
<th>Vehicle Model</th> 
<th>Vehicle Colour</th> 
<th>Date Registered</th> 
<th>Date Of Last MOT</th> 
<th>MOT Due</th> 
<th>Date Of Last Tax</th> 
<th>Tax Due</th> 
<th>Vehicle Driver</th> 
<th>Vehicle Driver Tel</th> 
</tr>"; 
while($row = mysql_fetch_array($result) and $row1 = mysql_fetch_array($DUE_DATES)) 
{ 
    echo "<tr>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Reg'] . "</td>"; 
    echo "<td >" . $row['Vehicle_Make'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Model'] . "</td>"; 
    echo "<td>" . $row['Vehicle_Colour'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Date_Registered'] . "</td>"; 
    echo "<td>" . $row['Date_Last_MOT'] . "</td>"; 
    echo "<td class=\"td1\">" . $row1['MOT_DUE_DATE'] . "</td>"; 
    echo "<td>" . $row['Date_Last_Tax'] . "</td>"; 
    echo "<td class=\"td1\">" . $row1['Date_Tax_Due'] . "</td>"; 
    echo "<td>" . $row['Vehicle_Driver'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Driver_Tel'] . "</td>"; 
} 

echo "</tr>"; 
echo "</table>"; 
mysql_close($con); 
?> 

回答

1

您不应该为每个表使用单独的查询。相反,你应该使用JOIN在一个单一的查询检索多个表中的相关数据:

SELECT 
    veh_List.col1, 
    veh_List.col2, 
    due_dates.col3, 
    ...etc... 
FROM veh_List 
JOIN due_dates ON veh_List.id = due_dates.id 
-- add more joins here if you need data from more tables 
ORDER BY veh_List.id DESC 

你应该了解JOIN关键字,这提供了各种可能性,包括了解INNER JOINOUTER JOIN之间的差异。

+0

完美的马克...... – 2012-02-06 10:58:38

0

我相信你可以简单地添加另一份声明中,并以同样的方式结合起来,你现在有,但是我的建议是使用正在修改的代码的机会,并合并SQL查询到一个。

另外,看看你的数据库设计 - 到期日期和注册车之间是否存在一对一的关系?如果是这样,为什么不把两个表合并在一起? (当然,我只能看到您在选择查询中使用的列)。

此外,依靠订单来匹配记录似乎有点危险 - 如果从截止日期的一行被删除,该怎么办?