在mysqli select语句中使用IF条件

时间:2015-03-19 11:00:58

标签: php

我目前正在建立一个宿舍管理系统,我有一个问题,当我选择从数据库中选择的房间,并建立一个选择框...问题是,我想我的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));

注意:空格列决定每个房间可容纳的人数......

我有一个单独的表格,其中包含学生的详细信息...... 非常感谢所有回复

2 个答案:

答案 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