php - 计算行数并与给定数字进行比较

标签 php mysql database count

我想计算数据库中的行数并用它来检查数据库中的值

$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 ";
}

引用资料:


脚注:

可能还有另一种方法可以做到这一点,但鉴于我在 MySQL 方面的技能,这是我想到的。

如果有人知道更好/更有效的方法,请给我留言。

关于php - 计算行数并与给定数字进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572584/

相关文章:

php - MySQL数据分组

sql - 如何对 MDB 文件运行 SQL 查询?

php - 模型中 1 个函数中的多个 MySQL 查询

php - 使用 class_implements VS instanceof 的用处

mysql - DataGridView 中的 List(Of T) 过载问题

php - 我需要回显从另一个页面上的 mysql 填充的下拉选择

python - 将Python中值为0的数据单元格与pandas夹在中间

ruby-on-rails - 如何在 Rails 3.2 中应用自动增量

php - 如何使用 PHP 和 MySQL 创建用户配置文件

php - 如何在我的网站上以更好的方式上传、播放和存储视频