Php 计数行通知

Php 计数行通知,php,Php,我正在尝试发出一个通知,用户将在哪里登录,并查看当他们登录到主页时,还有多少待处理的请求。然而,我得到这个错误,它说计数参数必须是数组或对象 count():参数必须是数组或实现可计数的对象 我做错了什么?我应该如何着手修复它?谢谢 <?php $sql = "SELECT status,request FROM orders WHERE status =

我正在尝试发出一个通知,用户将在哪里登录,并查看当他们登录到主页时,还有多少待处理的请求。然而,我得到这个错误,它说计数参数必须是数组或对象

count():参数必须是数组或实现可计数的对象

我做错了什么?我应该如何着手修复它?谢谢

<?php
                $sql = "SELECT status,request 
                         FROM orders 
                         WHERE status = 'Pending'
                         OR request = 'Pending'";
                $result = $conn->query($sql);
                if(!$result) die($conn->error);
                $rows = $result->num_rows;

                if (COUNT($rows['status']) OR COUNT($rows['request']) > 0) { 
                    echo "You have ".(COUNT($rows['status']) + COUNT($rows['request']))."pending notificatins.";
                }else{
                    echo "You have 0 pending notifications.";
                }
    ?>

获取所有行只是为了对它们进行计数没有意义。您需要不同的查询:

SELECT COUNT(request) 
           FROM orders 
            WHERE status = 'Pending'
            OR request = 'Pending'

我认为您可能能够实现这样的目标:在sql中分配每个计数,然后,重要的是,获取记录集以开始处理

<?php
    $sql = 'select
                ( select count(*) from `orders` where `status`='pending' ) as `status-count`,
                ( select count(*) from `orders` where `request`='pending' ) as `request-count`'; 

    $result = $conn->query( $sql );
    $rows = $result->num_rows;

    if( $result && $rows > 0 ){
        $rs = $result->fetch_all( MYSQLI_ASSOC );
        $status=$rs[0]['status-count'];
        $request=$rs[0]['request-count'];

        if( $status > 0 or $request > 0 ){
            printf('You have %s pending notifications: [ Status=%d, Request=%d ]', ( $status + $request ), $status, $request );
        }else{
            echo 'You have 0 pending notifications.';
        }
    }
?>


的确,对于问题中的PHP逻辑,一个简化的查询(如下面@marcin orlowski所示)将给出正确的计数,并允许逻辑工作。如果您愿意,它不允许您确定有多少个
状态
请求
,因为我需要同时计算状态和请求,我的查询是否应该像SELECT COUNT(状态、请求)…?不,这是无效的语法,但即使如此,也不需要这样做。您正在计算与WHERE匹配的行,并且每一行都有状态和请求,因此count是同一个
count(*)
,您得到的是
status='Pending'或request='Pending'之和
我实际上是在计算请求和状态,并将它们相加,因为它们位于不同的列下,因此,如果1条状态记录处于挂起状态,2条请求记录处于挂起状态,我希望它作为3条通知回显。我的查询统计与WHERE子句匹配的所有行。而且,由于您得到了或在那里,对于要记帐的行,只需将给定行中的一个文件设置为
Pending
。试试看你正在将
$行数
传递到你的
计数
函数中,其中
计数()
接受对象和数组。下面的投票人愿意告诉我为什么投反对票吗?