2016-05-17 23 views
0

我正在使用函數mysql_fetch_assoc來返回數據庫中的數據,但我不知道如何在表中打印結果。 這是執行此過程的代碼。在表中顯示mysql_fetch_assoc的結果

$number_of_date= "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
$res_qry = mysql_query($number_of_date) or die ('Invalid query :: <br/>'.$number_of_date.' <br/>'.mysql_error()); 

$rowqry = mysql_fetch_assoc($res_qry); 
$number_date = $rowqry ['number_of_date']; 
<tr> 
    <?php while($rowqry = mysql_fetch_assoc($res_qry)) { ?> 
     <td><?php echo $rowqry ['number_of_date']?></td> 
    <?php } } ?> 
</tr> 

它不工作。顯示這個結果的正確方法是什麼?

+0

不要使用'mysql_fetch_assoc()'兩次!! – Saty

回答

1

通過使用mysql_fetch_assoc()兩次,您已經將第一行結果分配給$rowqry。在您的查詢中,由於選擇了所有結果中的SUM(),因此只有一行結果,因此在while loop()中不會留下任何結果。

您可以刪除您的while loop(),因爲它是不必要的,因爲您只會獲得一行。

另外,您提供的代碼(一個HTML實體在PHP中)的事實。使用echo

$number_of_date= "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
$res_qry = mysql_query($number_of_date) or die ('Invalid query :: <br/>'.$number_of_date.' <br/>'.mysql_error()); 

$rowqry = mysql_fetch_assoc($res_qry); 
$number_date = $rowqry['number_of_date']; 

echo '<tr> 
      <td>'.$number_date.'</td> 
     </tr>'; 

注意:使用mysqli_*延伸,而不是過時mysql_*

+0

謝謝你。現在我通過這種方式解決了這個問題。 – Chathurika

1

刪除第一個mysql_fetch_assoc()

$number_of_date= "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
$res_qry = mysql_query($number_of_date) or die ('Invalid query :: <br/>'.$number_of_date.' <br/>'.mysql_error()); 

    <tr> 
     <?php while($rowqry = mysql_fetch_assoc($res_qry)) { ?> 
      <td><?php echo $rowqry ['number_of_date']?></td> 
     <?php } } ?> 
    </tr> 
+0

謝謝你,我解決了這個問題。 – Chathurika

1

你的構建似乎是畸形的。嘗試不同的一個:如果您使用內循環,那麼爲什麼使用外,如果你正在使用的了側環

<?php 
     $number_of_date = "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
     $res_qry  = mysql_query($number_of_date) 
     or die ('Invalid query :: <br/>'. $number_of_date . ' <br/>' . mysql_error()); 

     //$rowqry   = mysql_fetch_assoc($res_qry); // <== NOT NECESSARY SINCE YOU ARE GOING TO LOOP OVER THE RESULT 
     //$number_date = $rowqry ['number_of_date'];  // <== NOT NECESSARY SINCE YOU ARE GOING TO LOOP OVER THE RESULT 

    ?> 
    <tr> 
     <?php while($rowqry = mysql_fetch_assoc($res_qry)) : ?> 
      <td><?php echo $rowqry ['number_of_date']?></td> 
     <?php endwhile; ?> 
    </tr> 
+0

謝謝你,我解決了這個問題。 – Chathurika

1

實際上你已經使用2倍mysql_fetch_assoc功能意味着您已經進賬然後一個記錄光標移到下一個記錄獲取。並且如果在你的db中只有一條記錄,那麼在循環中你將不會得到任何東西,因爲你已經在循環之外取得了一條記錄。在第二種情況下,如果數據庫中存在更多的記錄,那麼由於您使用了2次mysql_fetch_assoc,您將從循環內的第二條記錄獲得輸出。所以請用下面的代碼替換你的代碼。

$number_of_date = "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
$res_qry = mysql_query($number_of_date) or die ('Invalid query :: <br/>'.$number_of_date.' <br/>'.mysql_error()); 

<tr> 
    <?php while($rowqry = mysql_fetch_assoc($res_qry)) { ?> 
     <td><?php echo $rowqry ['number_of_date']?></td> 
    <?php } } ?> 
</tr> 

試試這可能會解決您的問題。

+0

謝謝你,我解決了這個問題。 – Chathurika

1

首先,我建議將所有的mysql_函數改爲MySQLi函數。但是,爲了您的問題 - >您的代碼的問題是您的循環變量後面有空格。 $ res_qry ['variable']與$ res_qry ['variable']不一樣。

$number_of_date= "SELECT SUM(number_of_date) AS number_of_date FROM emp_leaves WHERE emp_id='$userID' AND leave_category='Annual' AND apply_year='$year'"; 
$res_qry = mysql_query($number_of_date) or die ('Invalid query :: <br/>'.$number_of_date.' <br/>'.mysql_error()); 

<tr> 
    <?php while($rowqry = mysql_fetch_assoc($res_qry)) { ?> 
     <td><?php echo $rowqry['number_of_date']?></td> 
    <?php } } ?> 
</tr> 
+0

謝謝你,我解決了這個問題。 – Chathurika