这可能非常简单,但我无法弄清楚这段代码的问题:
$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
正在重复,这是一个愚蠢的错误
答案 0 :(得分:4)
由于这一行,它只会echo
一次:
$sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));
您覆盖$sql
变量。
为什么不运行单个查询并加入您需要的数据?
答案 1 :(得分:4)
尝试($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>";
}
}
答案 2 :(得分:3)
我认为这是因为你正在重新设置sql变量
$sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));
当你仍然在while循环中使用它时。 :P
答案 3 :(得分:1)
这可能是这一行:
$sql = mysql_fetch_row(mysql_query("select title from Book where Book_ID = '$book_id'"));
尝试使用其他变量名称。
答案 4 :(得分:1)
您正在更改循环内的$ sql变量,因此下次运行$ row = mysql_fetch_array($ sql)时,该值将不同(可能不会基于您的代码)。
答案 5 :(得分:1)
在while循环中,您将重复使用相同的变量:$sql
。这用于控制循环的终止条件。
使用其他变量名称,例如$sql2
应保持原始变量的完整性,循环应按预期进行。