php - 为什么我的数据库插入查询在考勤管理系统php/mysql中插入记录失败
问题描述
我正在关注使用 PHP/Mysql 的考勤管理系统教程。由于某些原因,我注意到 INSERT 语句没有被执行,因为如果它执行了 $flag 变量将被设置为 1。
我尝试了一些让我意识到它可能来自 INSERT 语句的东西。我注释掉了 if 语句,以便 $flag 将设置为 1。当我这样做时,我会收到我想要显示的消息“已成功插入考勤数据”,但记录不会最终出现在数据库中。
HTML
<div class = "panel panel-default">
<div class = "panel panel-heading">
<h2>
<a class = "btn btn-success" href = "add.php">Add Student</a>
<a class = "btn btn-info float-right" href = "view_all.php">View All</a>
</h2>
<?php if($flag) {?>
<div class="alert alert-success">
Attendance Data Inserted Successfully
</div>
<?php } ?>
<?php if($update) {?>
<div class="alert alert-success">
Student Attendance Updated Successfully
</div>
<?php } ?>
<h3><div class="well text-center"> Date:<?php echo date('Y-m-d');?></div></h3>
<div class= "panel panel-body">
<form action="index.php" method="post">
<table class="table table-striped">
<tr>
<th>#Serial Number </th><th>Student Name</th><th>Row Number</th><th>Attendance Status </th>
</tr>
<?php $result = mysqli_query($conn, "SELECT * FROM attendance");
$serialnumber = 0;
$counter = 0;
while($row = mysqli_fetch_array($result))
{
$serialnumber++;
?>
<tr>
<td><?php echo $serialnumber; ?></td>
<td><?php echo $row['student_name']; ?>
<input type="hidden" value="<?php echo $row['student_name']; ?>" name="student_name[]">
</td>
<td><?php echo $row['row_number']; ?>
<input type="hidden" value="<?php echo $row['row_number']; ?>" name="row_number[]">
</td>
<td>
<input type="radio" name="attendance_status[<?php echo $counter;?>]" value="Present"
<?php if(isset($_POST['attendance_status'][$counter]) && `enter code here`$_POST['attendance_status'][$counter] == "Present"){
echo "checked = checked";`enter code here`
}?>
required>Present
<input type="radio" name= "attendance_status[<?php echo $counter;?>]" value="Absent"
<?php if(isset($_POST['attendance_status'][$counter]) && $_POST['attendance_status'][$counter] == "Absent"){
echo "checked = checked";
}?>
required>Absent
</td>
</tr>
<?php
$counter++;
}
?>
</table>
<input type="submit" name="submit" value="Submit" class="btn btn-primary">
PHP
<?php
include("db.php");
include("header.php");
$flag = 0;
$update = 0;
if(isset($_POST['submit']))
{
$date = date('Y-m-d');
//$date = "2019-03-14";
$records = mysqli_query($conn, "select * from attendance_records where date = '$date'");
$num = mysqli_num_rows($records);
if($num)
{
foreach($_POST['attendance_status'] as $id=>$attendance_status)
{
$student_name= $_POST['student_name'][$id];
$row_number = $_POST['row_number'][$id];
$result = mysqli_query($conn,"update attendance_records set student_name = '$student_name',row_number = '$row_number', attendance_status = '$attendance_status',date = '$date' where date = '$date'");
if($result){
$update=1;
}
}
}
else
{
foreach($_POST['attendance_status'] as $id=>$attendance_status)
{
$student_name= $_POST['student_name'][$id];
$row_number = $_POST['row_number'][$id];
$date = date("Y-m-d H:i:s");
$sql="insert into attendance_records(student_name,row_number,attendance_status,date)values('$student_name','$row_number','$attendance_status','$date')";
$result = mysqli_query($conn,$sql);
if($result)
{
$flag = 1;
}
}
}
}
DB 表出勤 id,student_name,row_number
出勤记录 id、学生姓名、行号、出勤状态、日期
我希望在数据库中成功插入记录后,应将 $flag 变量设置为 1,以便显示消息“已成功插入出勤数据”,但这似乎永远不会起作用。它不显示消息,当我签入数据库时,没有插入新记录。
解决方案
查询时
$sql="insert into attendance_records(student_name,row_number,attendance_status,date)values('$student_name','$row_number','$attendance_status','$date')";
出勤记录 id 必须是自动递增的,或者需要在同一个查询中插入一个 id 值
推荐阅读
- reactjs - 无法在 vscode 上调试 google SIGN IN
- css - 无法调整 vuetify v-data-table 中的页脚填充
- java - Vaadin 14 - 如何实现一个带有复选框列的网格,允许对多行进行操作?
- html - 如何给一个中间有一个静态单词的单元格提供多个值
- javascript - TypeError:运行 Jest 单元测试时,mxgraph 不是函数
- python - hamcrest:如何输入布尔值
- r - 如何在 datasummary 的输出中包含“column_spec”?
- python - 错误:索引 9 超出轴 0 的范围,大小为 9
- python - 使用 Python 读取 JSON 文件并打印自定义报告
- python - 使用 Python 的 Webdriver Manager 的 Selenium ChromeDriver 问题