php ifelse keep run else语句
我已经预订了一个教室 如果用户预订了已经预订的教室,我想附和一个声明。 我测试它以查看ifelse语句是否工作,但是ELSE{}中的SQL插入在if{}之后运行一次 我不知道为什么,也找不到是什么错误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=
$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),则表示有行满足条件。这意味着其他人已经预订了教室。