php ifelse保持运行else语句


php ifelse keep run else statement

我有一个预订教室的功能如果用户预订了已经预订的教室,我想回复一个声明。我对它进行了测试,看看ifelse语句是否有效,但ELSE{}中的SQL INSERT在if{}之后运行一次我不知道为什么,也找不到的错误是什么

$class=$_POST['class'];
            $time=$_POST['time'];
            $date=$_POST['date'];
            $type=$_SESSION['type'];
            $query=mysql_query("SELECT * FROM classroom");
            while($row=mysql_fetch_array($query))
            {
                if ($row['name']==$class && $row['date']==$date && $row['time']==$time) 
                {
                    echo "The class at this time already been booked.";
                }
                else
                {
                    mysql_query("INSERT INTO classroom(name,date,time,bookedby) VALUES('$class','$date','$time','$type')");                 
                    if ($_SESSION['username']=='admin') {
                    mysql_query("UPDATE classroom SET status='yes' WHERE name='$class' AND date='$date' AND time='$time'");                 
                    }
                    echo "booking submitted";
                    break;
                }
            }

您使用的逻辑不正确。请改用此代码。

        $class=$_POST['class'];
        $time=$_POST['time'];
        $date=$_POST['date'];
        $type=$_SESSION['type'];
        $query=mysql_query("SELECT * FROM classroom where name='$class' && date='$date' && time='$time'");
        if(mysql_num_rows($query)>0)
        {
                 echo "The class at this time already been booked.";
        }
        else
        {
                mysql_query("INSERT INTO classroom(name,date,time,bookedby) VALUES('$class','$date','$time','$type')");                 
                if ($_SESSION['username']=='admin') {
                mysql_query("UPDATE classroom SET status='yes' WHERE name='$class' AND date='$date' AND time='$time'");                 
                }
                echo "booking submitted";
                break;

        }

我刚修改了你的代码。最好学习mysqli/pdo的用法,并替换mysql的用法,因为它已被弃用。

此外,最好将列名"date"更改为其他名称,因为date是预定义的mysql关键字。尽管它没有包含在保留词中,并且mysql允许使用"date",但我的意见是不要使用它,因为它可能会引起混淆,在某些情况下还会产生一些冲突,返回错误。