计算行数并与给定数字

时间:2016-01-03 01:48:26

标签: 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";
}

我希望从数据库中获取房间号 if ($rows==5) 正在努力。

我想我的if语句是错误的。

我想检查数据库中的行数是否与room_number相同;它应该呼应“满屋子”。当我使用值代替$room_number时,它会起作用,但是当我使用$room_number时,它无效。

1 个答案:

答案 0 :(得分:4)

正如我在评论中提到的那样,你需要使用MySQL的聚合COUNT()函数来实现这一点,并计算表中的所有行,然后与给定的数字进行比较。

$dbh = new PDO("mysqli:host=$server;dbname=$db", $user, $pass); 

您提到该号码将来自用户/管理员输入,因此您还可以为其分配一个变量以替换“60”。

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

查询现在读作:

$admin_number = 60;
  • 我相信这就是您要做的事情,而不知道数据库的其余部分是什么样的。

编辑:

我在评论中提到的内容的附录,并改进了我的答案。

您可以添加一个名为“take”的额外列,并使用0/1标记方法,然后使用$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. "; } 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. ";
}

子编辑

实际上,经过一段时间的考虑之后,只需使用相同的变量$count_number,就可以使用上面所示的2个变量,这是一种稍微好一点的方法:

$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技能,这就是我提出的方法。

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