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;