0

我有三个这样的表:

表格1:

id|name with row 1: [1|alex] and row2: [2|jane]

表 2

nameid|classid with row 1: [1|2] and row2: [1|1] and row3: [2|2]

表3

classid|classname with row 1: [1|A] and row2: [2|B]

我想获取表 1 上的 ID,将其与表 2 进行比较以获取类 ID,然后将它们与表 3 进行比较以获取类名。我有表 1 中的 ID,我这样做:

<?php
$result = mysql_query("SELECT * FROM table2 WHERE nameid='$id'") or die(mysql_error());

while ($row = mysql_fetch_array($result)) {
    $classid = $row['classid'];
    //Get the class id to compare with table3
    $result = mysql_query("SELECT * FROM table3 WHERE classid='$classid'") or die(mysql_error());

    while($row = mysql_fetch_array($result)) {
        echo $row['classname'];
       //Write down the class name
    }       
}   
?>

但在表 2 中,有两行(1 和 2)具有相同的nameid = 1,但代码只打印一个类名。

4

1 回答 1

3

您正在重复使用$row$result这导致了您的问题。

$result = mysql_query("SELECT * FROM table2 WHERE nameid='$id'") or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
    $classid = $row['classid'];

    $result2 = mysql_query("SELECT * FROM table3 WHERE classid='$classid'")or die(mysql_error());
    while($row2 = mysql_fetch_array($result2)){
        echo $row2['classname'];

}

}

但是,您可以在一个带有连接的查询中得到它。

select table3.classname from table2 left join table3 on table3.classid = table2.classid where table2.nameid='$id'

还必须把它扔进去,否则其他人不会使用你应该使用 mysqli 或 pdo 的 mysql_* 函数。

于 2013-03-07T19:54:32.943 回答