2012-03-19 36 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應保持原始變量不變,循環應按預期進行。