在mysqli select语句中使用IF条件


using IF conditional in mysqli select statements

我目前正在构建一个宿舍管理系统,在选择房间时遇到了问题,我已经从数据库中选择了房间,并建立了一个选择框。。。问题是,我希望我的php脚本只允许每个房间最多有几个学生。。例如,如果一个房间只能容纳4名学生,那么只有4名学生可以通过我创建的管理表格进入房间。。。这是我的密码。。在基本表单验证之后。。。

$q="SELECT IF(Space >=1, 'true', 'false'),FROM rooms WHERE Room_id=$room_id";
$r=mysqli_query($con, $q);
 if($r==true){
   $q=INSERT INTO students(first_name, last_name, room_id)VALUES('$fn',   '$ln', '$room_id')";
$p=mysqli_query($con, $q)
  or die("Error querying database");
if($p){
$u="UPDATE rooms SET Space=(Space -1) WHERE Room_id=$room_id LIMIT 1";
}
}elseif($r==false){
  echo'<p>That room is already full please select another room</p>';
}

问题是,即使空间小于1,也会执行插入查询,并且更新正在运行,直到整数值(我在构建房间表中的空间列时使用的数据类型)为负数,并且php脚本允许在空间小于1的情况下向数据库中插入查询。。。。这是我房间桌子的一个例子。。

CREATE TABLE rooms(Room_id TINYINT NOT NULL AUTO_INCREMENT,
Wing VARCHAR(10) NOT NULL,
Space INT NOT NULL,
PRIMARY KEY(Room_id));

注意:空间栏决定了每个房间可以容纳的人数。。。

我有一张单独的桌子,里面放着学生的详细信息。。。将非常感谢所有回复

SELECT IF(Space >=1, 'true', 'false') as column_name FROM rooms WHERE Room_id=$room_id

您正在检查mysql结果ref,查询结果,您应该使用mysqli_fetch_row()来查看查询结果,请参阅下面的示例代码

$q="SELECT IF(Space >=1, true, false) AS `space_bool` FROM rooms WHERE Room_id=$room_id";
$r=mysqli_query($con, $q);
$row=mysqli_fetch_assoc($r);
if($row['space_bool'] == true){
...
....
}

查询IF-ELSE中的另一个问题分配到新的结果列(space_bool)中,这将很容易在PHP代码

中获取行