Php 从SQL Server表获取行数

Php 从SQL Server表获取行数,php,sql-server,count,Php,Sql Server,Count,在计算表中的行数后,我无法获得正确的值。我在网上搜索了一下,但没有找到答案 在数据库中,我有一个包含所有类别的表,它们都有一个id,我想使用这个列进行计数 我有这个PHP代码,它可以工作,但有没有其他更好的方法来克服这个问题 $sql2 = "SELECT COUNT(id) FROM categories"; $stmt2 = sqlsrv_query($conn, $sql2); $res = sqlsrv_fetch_array($stmt2, SQLSRV_FET

在计算表中的行数后,我无法获得正确的值。我在网上搜索了一下,但没有找到答案

在数据库中,我有一个包含所有类别的表,它们都有一个id,我想使用这个列进行计数

我有这个PHP代码,它可以工作,但有没有其他更好的方法来克服这个问题

    $sql2 = "SELECT COUNT(id) FROM categories";
    $stmt2 = sqlsrv_query($conn, $sql2);
    $res = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_ASSOC);
    foreach($res as $row)
    {
        $rows = $row;
    }

    //if there are categories display them otherwise don't
    if ($rows > 0)
    {
        $sql = "SELECT * FROM categories";
        $stmt = sqlsrv_query($conn, $sql);

        while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
            echo "<a href='#' class='cat_links'>" . $row['category_name'] . "  - <font size='-1'>" . $row['category_description'] . "</font></a>";
        }
    }
    else
    {
        echo "<p style='text-align: center'>No categories yet.</p>";
    }
$sql2=“从类别中选择计数(id)”;
$stmt2=sqlsrv_查询($conn,$sql2);
$res=sqlsrv\u fetch\u数组($stmt2,sqlsrv\u fetch\u ASSOC);
foreach($res作为$row)
{
$rows=$row;
}
//如果有类别,则显示它们,否则不显示
如果($rows>0)
{
$sql=“从类别中选择*”;
$stmt=sqlsrv_查询($conn,$sql);
而($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u ASSOC)){
回声“;
}
}
其他的
{
echo“

还没有分类。

”; }
我认为必须有更好的方法将$stmt2变量从SQL资源转换为实际数字,或者将$res变量从数组转换为数字。如果我尝试使用foreach回显整个数组,它将只打印出行数。这就是我现在使用它来计算行数的原因


我不能使用sqlsrv_num_rows函数,因为我会得到一个错误,或者没有答案。

你得到的错误是什么?我认为它是一个动态表,但我不总是得到它,我也没有产生错误的代码,如果我现在使用sqlsrv_num_rows,我不会得到任何关于
COUNT()的行数
查询将为1。您这样做只是为了返回所需的行吗?我需要从表中获取行数,如果我向其中添加类别,它将不同,它将永远不会是1。
COUNT()
将在一行中返回一个数字。