使用IF条件在mysqli选择语句

问题描述:

我目前正在建设一个宿舍管理系统,我有一个问题,当涉及到我已经从数据库中选择的房间选择,并建立一个选择框......问题是,我想我的PHP脚本只允许每个房间的最大数量的学生..例如,如果房间只能容纳4名学生,那么只有4可以通过我建立的管理员表单被允许进入房间......这里是我的代码.. 基本形式的验证之后...使用IF条件在mysqli选择语句

$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)); 

注:空间列是什么决定的,每个房间可容纳人IHAVE持有学生细节一个单独的表数...

... 所有的反应将是极大的赞赏

+0

首先,请让您的代码更清洁。 – Gasim 2015-03-19 11:06:42

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

你正在检查mysql resul牛逼裁判,查询结果,你应该使用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代码

抓取行
+0

感谢您的回复......让我试着对剧本做出新的更改..... – 2015-03-19 11:17:54

+0

即使按照您的建议对我的剧本进行了新更改后,似乎也会出现选择房间的问题因为我一直在收到一个回声消息,说房间里有一个房间已满,但房间里没有空......任何建议? – 2015-03-23 08:20:57

+0

我发现了一个简单的方法,虽然我不知道它是否是最好的方法,但这里是....我在我的房间表中的空间列添加了检查约束像这样... alter table rooms add检查(空间> 0)....这样,我运行我的更新后,没有办法,该列将永远有一个负值.. – 2016-05-03 15:23:44