2016-05-17 24 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