我想计算数据库中的行并使用它来检查数据库中的值
$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
时,它无效。
答案 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技能,这就是我提出的方法。
如果有人知道更好/更有效的方法,请给我留言。