我目前正在建立一个宿舍管理系统,我有一个问题,当我选择从数据库中选择的房间,并建立一个选择框...问题是,我想我的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并且更新正在运行直到整数值(我在构建room表空间列中使用的数据类型)运行时,仍在执行插入查询并且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));
注意:空格列决定每个房间可容纳的人数......
我有一个单独的表格,其中包含学生的详细信息...... 非常感谢所有回复
答案 0 :(得分:1)
您正在检查mysql结果参考,查询结果,您应该使用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代码中获取行
答案 1 :(得分:0)
SELECT IF(Space >=1, 'true', 'false') as column_name FROM rooms WHERE Room_id=$room_id