php - 计算数据库中的某些行并仅显示该列中大于 0 的值

标签 php mysql

我正在尝试显示数据库中的一些值,但在显示正确信息时遇到一些问题。

在我的数据库中,有一个名为 coplevel 的列,该列的枚举值最多为 7。

在我的 PHP 方面,我试图计算数据库中具有 coplevel > 0 的所有用户,但是我在 SOF 上尝试过,可以工作,但不是我想要的方式去工作。

因此,如果我有 5 个警察级别为 1、2、3、4、5 的用户,我只想计算警察级别大于 0 的用户

<?php
$sql = "SELECT COUNT(*) FROM `players` WHERE `coplevel` > 0";
if ($result = mysqli_query($link, $sql)) {
    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_array($result)) {
            $totalc = $row['0'];
            echo "<b>" . $totalc . "</b>";
        }
        mysqli_free_result($result);
    } else {
        $totalc = "Couldn't find cop info";
    }
} else {
    echo "ERROR: Could not execute $sql. " . mysqli_error($link);
}
?>

如果有 5 个用户的 coplevel 都超过 0,则仅计算并显示 coplevel > 0 的用户

最佳答案

您的查询是正确的,但您弄乱了 $row 数组。

这个:

while ($row = mysqli_fetch_array($result)) 

将行返回到名为 $row 的关联数组中

关联数组存储键和值对

在本例中,键是列名称,值是列中的数据

您可以使用数组中的索引或其键名称来访问数组中的值。

当你说:

$totalc = $row['0'];

您尝试获取键名为 0 的数组的值,但它不存在

你想要做的是获取索引 0。所以你应该说:

$totalc = $row[0];

一个更清晰的替代方法是在查询中正确地为 COUNT(*) 起别名,以便在数组中为其键拥有正确的名称:

$sql = "SELECT COUNT(*) AS cnt FROM `players` WHERE `coplevel` > 0";
if ($result = mysqli_query($link, $sql)) {
    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_array($result)) {
            $totalc = $row['cnt'];

关于php - 计算数据库中的某些行并仅显示该列中大于 0 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841760/

相关文章:

php - Laravel Backpack - 请求未知数据库类型 tsvector

php - 在数据库中保留 1 周数据

php - 使用 PHP 更新 PostgreSQL 中的行

javascript - 使用 ajax 中的值填充下拉列表

mysql - 这段代码关于外键关系正确吗

php - 将用户输入的 bool 搜索字符串转换为 mySQL

mysql - Libre Office Calc 数据范围源为空

mysql - 如何映射配置单元表中的列名并将其替换为配置单元表中的新值

php - PHP 5.4 的编译器当前状态如何?

mysql - 如何在 MySql 中检查数据字典的大小