我想计算数据库中的行数并用它来检查数据库中的值
$result =mysqli_query($cn,"SELECT * FROM set_ballot");
while($row = mysqli_fetch_array($result)) {
$room_number = $row['room_number'];
}
$rows= mysqli_num_rows($result);
if ($rows==$room_number) {
echo "room full";
}
我想从数据库中获取房间号
如果($rows==5)
正在工作。
我想我的 if 语句是错误的。
我想检查我的数据库中的行数是否与房间号相同;它应该回应“房间已满”。当我使用一个值代替 $room_number
时,它起作用了,但是当我使用 $room_number
时它不起作用。
最佳答案
正如我在评论中提到的,您需要使用 MySQL 的聚合 COUNT()
函数以实现此目的,并计算表格中的所有行,然后与给定数字进行比较。
$result = mysqli_query($cn,"SELECT COUNT(*) AS number FROM set_ballot");
$num = mysqli_fetch_array($result);
$count = $num["number"];
// echo("$count");
if($count == 60){
echo "Rooms are full. ";
}
else{
echo "Rooms are not full. ";
}
您提到该数字将来自用户/管理员输入,因此您还可以为其分配一个变量来替换“60”。
$admin_number = 60;
查询现在将读作:
$admin_number = 60;
$result = mysqli_query($cn,"SELECT COUNT(*) AS number FROM set_ballot");
$num = mysqli_fetch_array($result);
$count = $num["number"];
// echo("$count");
if($count == $admin_number){
echo "Rooms are full. ";
}
else{
echo "Rooms are not full. ";
}
- 我相信这就是您想要做的,但不知道数据库的其余部分是什么样子。
编辑:
补充我在评论中提到的内容,并改进我的回答。
例如,您可以添加一个名为“taken”的额外列并使用 0/1 标记方法,然后在 WHERE
子句中计算这些列以及 COUNT()
并使用 HAVING/COUNT(column)
。
我认为您目前正在做的是,您正在删除行并在稍后添加它们,这可能被证明是低效的并且会丢失您的数据,然后必须重建您的行。
我的意思是:
旁注:$count_number
和 $admin_number
变量都需要匹配为整数。
$count_number = 60; // count if the number of rows in "taken" has a 1 flag
$admin_number = 60; // the number that the admin enters
$counter = mysqli_query($cn,"SELECT COUNT(*) AS number
FROM set_ballot WHERE taken = 1
HAVING COUNT(taken) = $count_number");
$num = mysqli_fetch_array($counter);
$count = $num["number"];
// echo("$count");
// if($count == 60){
if($count == $admin_number){
echo " Yep! There are $count_number rooms taken. ";
}
else{
echo " Nope, some are available. ";
}
子编辑:
实际上,在稍微考虑之后,有一个稍微好一点的方法,不必像我上面展示的那样使用 2 个变量,只需使用相同的变量 $count_number
:
$count_number = 60;
$counter = mysqli_query($cn,"SELECT COUNT(*) AS id
FROM set_ballot WHERE taken = 1
HAVING COUNT(taken) = $count_number");
$num = mysqli_fetch_array($counter);
$count = $num["id"];
// echo("$count");
// if($count == 60){
if($count == $count_number){
echo " Yep! There are $count_number rooms taken. ";
}
else{
echo " Nope ";
}
引用资料:
- http://dev.mysql.com/doc/mysql/en/counting-rows.html
- https://dev.mysql.com/doc/refman/5.0/en/group-by-handling.html
- http://dev.mysql.com/doc/en/where-optimizations.html
脚注:
可能还有另一种方法可以做到这一点,但鉴于我在 MySQL 方面的技能,这是我想到的。
如果有人知道更好/更有效的方法,请给我留言。
关于php - 计算行数并与给定数字进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572584/