我正在尝试显示数据库中的一些值,但在显示正确信息时遇到一些问题。
在我的数据库中,有一个名为 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/