猿问

如何选择有多少用户具有不同的行值

我有名为“空缺”的 ROW - 它显示了某人去度假的次数。


一些具有值“0”。有些值“1”甚至“30”。没关系。


但是,我想选择每个“空缺”行不为 0 的用户。我该怎么做?


    User1: Vacancy row 0

    User2: Vacancy row 0

    User3: Vacancy row 5

    User4: Vacancy row 8

    User5: Vacancy row 6000

    User6: Vacancy row 100

    User7: Vacancy row 0

    _______

    Total users who went to vacancy: 4.  How can I echo number 4? 


$sql = "SELECT Vacancy FROM users WHERE Vacancy > 0";

?

我当前的代码:


$sql25 = "SELECT Vacancy AS value_vacancy FROM users WHERE Vacancy > 0";

$result = $con->query($sql24);


if ($result->num_rows > 0) {

    while($totalvacancy = $result->fetch_assoc()) {

$output25 = $totalvacancy ["value_vacancy"];    }



<html><p><?php echo number_format("$output25",0,",",".");?> people who went to vacancy</p>

</html>

有错误


Warning: number_format() expects parameter 1 to be float, string given in on line


largeQ
浏览 149回答 2
2回答

沧海一幻觉

您的代码正在遍历查询结果并将 的值分配给vacancy变量(可能未在循环外声明)。这不是您想要的(您实际上应该只计算查询返回的行数)。无论如何,我建议使用聚合查询来计算空缺用户的总数。这样的查询(没有子句的聚合group by)保证总是只返回一行,具有预期的计数。这避免了循环遍历结果的需要。让您的数据库为您完成聚合工作也比在 php.ini 中获取和循环更有效。您的代码可能如下所示:$sql25 = "SELECT COUNT(*) AS cnt_vacancy FROM users WHERE Vacancy > 0";if ($result = $con->query($sql24)) {&nbsp; &nbsp; $row = $result->fetch_assoc();&nbsp; &nbsp; <html><p><?php echo $row['cnt_vacancy']; ?> people went to vacancy</p></html>} else {&nbsp; &nbsp; # error handling...}

FFIVE

您可以简单地使用!=as,SELECT * FROM user WHERE vacancy != 0;对于您的问题,请尝试一下。$query = "SELECT sum(vacancy) as total FROM user WHERE vacancy != 0";$result = $con->query($query);if(mysqli_num_rows($result) > 0){&nbsp; &nbsp; $total = mysqli_fetch_assoc($result);&nbsp; &nbsp; $total = floatval($totle['total']);}<html>&nbsp; &nbsp; <p><?php echo number_format($total,0,",",".");?> people who went to vacancy&nbsp; &nbsp; </p></html>
随时随地看视频慕课网APP
我要回答