显示嵌套查询的多个结果?

时间:2013-06-24 15:00:29

标签: php mysql

我正在写一个预约类型的东西,我有一个表可能的时间,所以我的第一个查询是列出所有的时间,然后我的第二个表是预定的约会,其中列出了表内的约会它的时间和日期与从第一个查询中提取的时间和日期相匹配。

我无法弄清楚的是,第二个查询中的2个条目是否符合条件以同时显示两个结果。

继承我的设置:

$query = mysql_query("SELECT * FROM times", $db);
while ($row = mysql_fetch_array($query)){
    $time = $row[time];
    $query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db);
    $apt = mysql_fetch_array($query2);
    $aptid = $apt[id];
    echo "<tr><td>";
    echo date('h:i A', strtotime($row[time]));
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
    if($aptid != ''){
        echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
    }
    echo "</td></tr>";
}

E.G。:2个约会定于上午9点,它只显示第一个。 See screenshot

enter image description here

2 个答案:

答案 0 :(得分:5)

将其修改为

$query = mysql_query("SELECT * FROM times", $db);
while ($row = mysql_fetch_array($query)){
    $time = $row[time];
    $query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db);

    while($apt = mysql_fetch_array($query2))
   {
    $aptid = $apt[id];
    echo "<tr><td>";
    echo date('h:i A', strtotime($row[time]));
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
    if($aptid != ''){
        echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
    }
    echo "</td></tr>";
 }
}

你必须在里面运行另一个嵌套循环。

答案 1 :(得分:0)

mysql_fetch_array只会获取一行数据。从php手册:

  

mysql_fetch_array - 将结果行作为关联数组获取,a   数组或两者

这意味着您需要循环以获得多个约会,就像第一个循环一样:

while($apt = mysql_fetch_array($query2)) {
    $aptid = $apt[id];
    echo "<tr><td>";
    echo date('h:i A', strtotime($row[time]));
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
    if($aptid != ''){
        echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
    }
    echo "</td></tr>";
}