【发布时间】:2021-12-06 22:08:04
【问题描述】:
我在处理这段代码时遇到了问题。它不会根据查询进入第三个条件。 我有 5 列要处理。
AMIN AMOUT PMIN PMOUT 状态
第一个条目创建记录是没有该日期和学生的记录。列:AMIN,状态为 0 它应该在 AMOUT 和 STATUS 列上更新为 1 接下来,应该将 PMIN 更新为 STATUS 2 最后将 PMOUT 更新为状态 3。
此代码仅在 PMIN 之前有效,然后更新 AMOUT 更新 PMIN。它不会进入 PMOUT
我有这个代码:
<?php
$sql ="SELECT * FROM attendance WHERE STUDENTID='$id' AND LOGDATE='$date'";
$query=$conn->query($sql);
if($query->num_rows>0){
$sql1 ="SELECT * FROM attendance WHERE STUDENTID='$id' AND LOGDATE='$date' AND STATUS='1'";
$query1=$conn->query($sql1);
if($query1->num_rows>0){
$sql2 ="SELECT * FROM attendance WHERE STUDENTID='$id' AND LOGDATE='$date' AND STATUS='2'";
$query2=$conn->query($sql2);
if($query2->num_rows>0){
$sql = "UPDATE attendance SET PMOUT='$time', STATUS='3' WHERE STUDENTID='$studentID' AND LOGDATE='$date'";
$query=$conn->query($sql);
$_SESSION['success'];
}
else{
$sql = "UPDATE attendance SET PMIN='$time', STATUS='2' WHERE STUDENTID='$studentID' AND LOGDATE='$date'";
$query=$conn->query($sql);
$_SESSION['success'];
}
}
else{
$sql = "UPDATE attendance SET AMOUT='$time', STATUS='1' WHERE STUDENTID='$studentID' AND LOGDATE='$date'";
$query=$conn->query($sql);
}
}else{
$sql = "INSERT INTO attendance(STUDENTID,AMIN,LOGDATE,STATUS) VALUES('$studentID','$time','$date','0')";
if($conn->query($sql) ===TRUE){
$_SESSION['success'];
}else{
$_SESSION['error'] = $conn->error;
}
}
有没有更好的方法来做到这一点?
【问题讨论】:
-
我有 5 列可以使用。 不,提供完整的 CREATE TABLE 脚本。
-
创建表
attendance(IDint(11) NOT NULL,STUDENTIDvarchar(250) NOT NULL,AMINvarchar(250) NOT NULL,AMOUTvarchar(250 ) 非空,PMINvarchar(50) 默认空,PMOUTvarchar(50) 默认空,LOGDATEvarchar(250) 非空,STATUSvarchar(2) 非空,) ENGINE=InnoDB 默认字符集=utf8mb4; -
请不要将事实作为 cmets 发布 - 将它们添加到问题文本中(使用下方的编辑链接)。
标签: php mysql nested conditional-statements