我有一个预订教室的功能如果用户预订了已经预订的教室,我想回复一个声明。我对它进行了测试,看看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",但我的意见是不要使用它,因为它可能会引起混淆,在某些情况下还会产生一些冲突,返回错误。