2012-03-19 38 views
2

这可能是很简单,但我不能用这个代码找出问题:While循环不打印所有的答案

$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

我的猜测是你的循环内查询失败。你应该检查你的查询是否正确,通过检查mysql_error() – Cfreak 2012-03-19 14:17:44

回答

3

我认为这将是因为你的时候,你仍然在while循环中使用它ressetting SQL变量

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

。 :P

4

将这一行的唯一一次echo因为:

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

您覆盖$sql变量。

为什么不只是运行一个查询并加入你需要的数据呢?

+0

谢谢,我会解决这个问题,但是请你告诉为什么会发生这种情况? – Namit 2012-03-19 14:16:30

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>"; 
     } 
    } 
+0

我认为最后一行$ sql [0]应该是$ sql2 [0] – Ynhockey 2012-03-19 14:23:21

+0

@Ynhockey我是第一次更新anwser – mgraph 2012-03-19 14:24:42

1

这也可能是这一行:

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

尝试使用不同的变量名。

1

您正在更改循环内部的$ sql变量,因此下次运行$ row = mysql_fetch_array($ sql)时,值将会不同(可能不会基于您的代码)。

1

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

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