我是一名学生,我有一个在线参与项目 我制作了这段代码,但是当我尝试时,它为一个roll_number插入了3条记录。我做错了什么?
<?php
include("db.php");
include("header.php");
$hostname = "localhost";
$username= "root";
$password = "";
$databaseName = "attendance_system";
date_default_timezone_set('Europe/Bucharest');
$con = mysqli_connect($hostname, $username, $password, $databaseName);
if(isset($_POST["submit"]))
{foreach($_POST['prezenta'] as $id=>$prezenta)
{
$student_nume=isset($_POST['student_name'][$id]);
$student_prenume=isset($_POST['roll_name'][$id]);
$date=date( 'Y-m-d H:i:s');
mysqli_query($con,"insert into attendence_records(student_name,
roll_name, attendence_status, data) SElect
student_name,roll_name,'$prezenta','$date' from attendence1");
//VALUES ('$student_nume','$student_prenume','$prezenta','$date')");
}
}
?>
<div class="panel panel-default">
<div class="panel panel-heading">
<h2>
<a class="btn btn-success" href="add.php"> Adauga student</a>
<a class="btn btn-info pull-right" href="viewall.php"> vizualizare</a>
</h2>
<div class="well text-center">Data:<?php echo date( 'Y-m-d H:i:s');?>
</div>
<div class="panel panel-body">
<form action="index1.php" method="post">
<table class="table table-striped">
<thead>
<tr class="success">
<th>NR CRT.</th>
<th>matricola</th>
<th>nume</th>
<th>data</th>
<th>prezenta</th>
</tr>
</thead>
<tbody>
<?php
$result=mysqli_query($con,"Select * from attendence1");
$serialnumber=0;
$counter=0;
while($row=mysqli_fetch_array($result))
{
$serialnumber++;
?>
<tr>
<td><?php echo $serialnumber;?> </td>
<td><?php echo $row['roll_name'];?></td>
<input type="hidden" value="<?php echo $row['roll_name'];?>
name="roll_name">
<td><?php echo $row['student_name'];?></td>
<input type="hidden" value="<?php echo $row['student_name'];?>
name="student_name">
<td><?php echo date( 'Y-m-d H:i:s');?></td>
<td>
<input type="radio" name="prezenta[<?php echo $counter;?>]"
value="Present ">Prezent
<input type="radio" name="prezenta[<?php echo $counter;?>]"
value="Absent">Absent
</td>
</tr>
<?php
$counter++;
}
?>
</table>
<input type="submit" name="submit" value="submit" class="btn btn-primary">
我试图将3个学生记录作为测试
1 rwwr vasile 2017-09-27 22:06:43 Prezent Absent
2 2233 opm 2017-09-27 22:06:43 Prezent Absent
3 963 vasile 2017-09-27 22:06:43 Prezent Absent
但是在数据库中
Modifică Modifică
Copiază Copiază
Șterge Șterge
352
vasile
rwwr
Present
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
353
opm
2233
Present
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
354
vasile
963
Present
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
355
vasile
rwwr
Absent
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
356
opm
2233
Absent
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
357
vasile
963
Absent
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
358
vasile
rwwr
Present
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
359
opm
2233
Present
2017-09-27 22:43:30
Modifică Modifică
Copiază Copiază
Șterge Șterge
360
vasile
963
Present
2017-09-27 22:43:30
这是我的表http://prntscr.com/gr95dj的结构 - 这是attendence_records和http://prntscr.com/gr95tm这是关注1
答案 0 :(得分:1)
很明显,您的数据库中会插入三条记录。
在这一行:
mysqli_query($con, "insert into attendence_records(student_name,
roll_name, attendence_status, data)
select student_name, roll_name, '$prezenta', '$date' from attendence1");
至于价值,您从表中选择:
select student_name, roll_name, '$prezenta', '$date' from attendence1");
此选择将返回此表中的所有当前记录。因此,如果您的表中有3条记录,那么它将返回3条记录,然后您有一条循环,用于您提交的3条记录,这些记录将乘以表中的3条记录,结果将是您拥有的这9条记录
我不确定您的 select
声明中使用 insert
的登录信息。即使您想这样做,我认为您应该 where clause
至少选择要选择的特定记录