在表中显示mysql_fetch_assoc的结果


Display the results of mysql_fetch_assoc in a table

我使用函数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>