我使用函数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>
它不起作用。显示此结果的正确方式是什么?
通过两次使用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_*
。
删除第一个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>
您的构造似乎格式不正确。尝试另一个:
<?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>
实际上,您已经使用了两次mysql_fetch_assoc
函数,如果您使用的是内部循环,那么为什么要使用外部循环?如果您使用一个外部循环,则意味着您已经提取了一条记录,然后将光标移到下一条记录提取。如果数据库中只有一条记录,那么在循环中您将一无所获,因为您已经在循环外获取了一条记录。在第二种情况下,如果您的数据库中存在多个记录,那么您将从循环中的第二个记录中获得输出,因为您已经使用了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>
试试这个也许你的问题会得到解决。
首先,我建议将所有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>