While循环未打印所有答案


While loop not printing all answers

这可能非常简单,但我无法解决此代码的问题:

$sql = mysql_query("select * from Temporary_Stock_Transfer where Emp_ID = '$emp_id' and Company_ID = '$company_id'");
    if(mysql_num_rows($sql) == 0) {
        echo "<tr><td colspan='3'><i>You currenty have no items</i></td></tr>";
    }else {
        while($row = mysql_fetch_array($sql)) {
            echo mysql_num_rows($sql);
            echo 'reached';
            $book_id = $row[1];
            $sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));
            echo "<tr><td>".$sql[0]."</td><td>".$row[2]."</td><td><span class='label label-important'>Remove</span></td></tr>";
        }
    }

现在基于我的数据库,查询返回2个结果,echo mysql_num_rows($sql)也给出2。然而,达成的协议只得到一次回应。有人看到代码存在潜在问题吗?

p.S:我的错,$sql正在重复,这是一个愚蠢的错误

由于以下行,它将只echo一次:

$sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));

您覆盖$sql变量。

为什么不只运行一个查询并连接所需的数据呢?

try($sql2而不是$sql$sql[0]$sql2[0]):

$sql = mysql_query("select * from Temporary_Stock_Transfer where Emp_ID = '$emp_id' and Company_ID = '$company_id'");
    if(mysql_num_rows($sql) == 0) {
        echo "<tr><td colspan='3'><i>You currenty have no items</i></td></tr>";
    }else {
        while($row = mysql_fetch_array($sql)) {
            echo mysql_num_rows($sql);
            echo 'reached';
            $book_id = $row[1];
            $sql2 = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));
            echo "<tr><td>".$sql2[0]."</td><td>".$row[2]."</td><td><span class='label label-important'>Remove</span></td></tr>";
        }
    }

我认为这是因为您正在重新设置sql变量

            $sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));

当您仍在while循环中使用它时。:P

可能是这行:

 $sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));

请尝试使用其他变量名。

您正在更改循环中的$sql变量,因此下次运行$row=mysql_fetch_array($sql)时,该值将有所不同(根据您的代码,可能不会有任何值)。

在while循环中,您正在使用相同的变量:$sql。这用于控制循环的终止条件。

使用不同的变量名,例如$sql2应保持原始变量不变,循环应按预期进行。