Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php ifelse keep run else语句_Php_Sql_If Statement - Fatal编程技术网

php ifelse keep run else语句

php ifelse keep run else语句,php,sql,if-statement,Php,Sql,If Statement,我已经预订了一个教室 如果用户预订了已经预订的教室,我想附和一个声明。 我测试它以查看ifelse语句是否工作,但是ELSE{}中的SQL插入在if{}之后运行一次 我不知道为什么,也找不到是什么错误 $class=$_POST['class']; $time=$_POST['time']; $date=$_POST['date']; $type=$_SESSION['type']; $query=

我已经预订了一个教室 如果用户预订了已经预订的教室,我想附和一个声明。 我测试它以查看ifelse语句是否工作,但是ELSE{}中的SQL插入在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”,但我的意见是不要使用它,因为它可能会导致混乱,在某些情况下还会导致一些冲突,返回错误。

您的代码会检查每一行是否匹配,对于不匹配的每一行,会插入新行。你想检查是否有任何行匹配,如果没有匹配,插入一个新行。首先,在准备好的语句中使用mysqli或PDO,第二:只使用select where语句,你不能在PHP中循环并比较每一行,这很不直观,第三,在插入之前添加一个条件,无需插入然后更新OK我知道了…谢谢everyonemysql_num_rows返回所选行的总数。如果大于零(>0),则表示有行满足条件。这意味着其他人已经预订了教室。