Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 已准备语句计数返回的行数_Php_Mysqli - Fatal编程技术网

Php 已准备语句计数返回的行数

Php 已准备语句计数返回的行数,php,mysqli,Php,Mysqli,我想显示用户和在线用户的总数。但是,有两个简单的查询: SELECT id FROM users; 及 这是我的第一个语句的代码 if($stmt = $mysqli->prepare("SELECT id FROM users")) { $stmt->execute(); $stmt->fetch(); $totalcount = $stmt->num_rows; $stmt->close(

我想显示用户和在线用户的总数。但是,有两个简单的查询:

SELECT id FROM users;

这是我的第一个
语句的代码

if($stmt = $mysqli->prepare("SELECT id FROM users"))
    {
        $stmt->execute();
        $stmt->fetch();
        $totalcount = $stmt->num_rows;
        $stmt->close();
        $stmt = null;

    }
第二项:

if($stmt = $mysqli->prepare("SELECT id FROM users WHERE online=?"))
    {
        $requ = 1;
        $stmt->bind_param("i", $requ);
        $stmt->execute();
        $stmt->bind_result($onlineUsers);
        $stmt->fetch();
        $count = $stmt->num_rows;
        $stmt->close();
        $stmt = null;

    }

它只返回0作为用户和在线用户的总数。如何执行这样的检查?

不要选择所有行,而是执行
选择计数(*)
查询,以便将计数作为结果返回。事实上,您可以将两个查询合并为一个查询:

if ($stmt = $mysqli->prepare("SELECT COUNT(*), SUM(online = ?) FROM users") {
    $requ = 1;
    $stmt->bind_param("i", $requ);
    $stmt->execute();
    $stmt->bind_result($totalcount, $count);
    $stmt->fetch();
    $stmt->close();
    $stmt = null;
}

另外,通过在mysql客户机中运行查询,确保获得预期的结果
if ($stmt = $mysqli->prepare("SELECT COUNT(*), SUM(online = ?) FROM users") {
    $requ = 1;
    $stmt->bind_param("i", $requ);
    $stmt->execute();
    $stmt->bind_result($totalcount, $count);
    $stmt->fetch();
    $stmt->close();
    $stmt = null;
}
if($stmt = $mysqli->prepare("SELECT COUNT(id) FROM users WHERE online=?"))



 $requ = 1;
    $stmt->bind_param("i", $requ);
    $stmt->execute();
    $stmt->bind_result($onlineUsers);
    $stmt->fetch();
    echo $onlineUsers;
    $stmt->close();
    $stmt = null;