PHP MySQL - 在循环中返回多个选择查询
问题描述:
我有下面的代码,它可以正常工作,但是现在我想(如果可能)添加第三个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);
?>
答
您不应该为每个表使用单独的查询。相反,你应该使用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 JOIN
和OUTER JOIN
之间的差异。
答
我相信你可以简单地添加另一份声明中,并以同样的方式结合起来,你现在有,但是我的建议是使用正在修改的代码的机会,并合并SQL查询到一个。
另外,看看你的数据库设计 - 到期日期和注册车之间是否存在一对一的关系?如果是这样,为什么不把两个表合并在一起? (当然,我只能看到您在选择查询中使用的列)。
此外,依靠订单来匹配记录似乎有点危险 - 如果从截止日期的一行被删除,该怎么办?
完美的马克...... – 2012-02-06 10:58:38