我是一个自学者,但我被困在这里。我希望你们能帮我解决这个问题。部门值每次都不同,我想将值插入mysql数据库。我不知道怎么做。但我做了以下工作来完成这项工作。
<tr>
<td>
<?php echo $result['dep']; ?><input type="hidden" name="department" value="<?php echo $result['dep']; ?>">
</td>
<td>
<input type="radio" name="attendance[<?php echo $result['roll'] ?>]" required="1" value="present"> Present
<input type="radio" name="attendance[<?php echo $result['roll'] ?>]" required="1" value="absent"> Absent
</td>
</tr>
这是我的迭代代码,将表单数据插入mysql数据库:
如果(isset($ _ POST [ '提交'])){
$attendance = $_POST['attendance'];
$dep = $_POST['department'];
$current_date = date('Y-m-d');
$getAttendance = $user->insertAttendance($dep, $attendance, $current_date);
}
这是insert函数:public function insertAttendance($ dep,$ attendance = array(),$ date){foreach($ attendance as $ att_key => $ att_value){
$sql = "INSERT INTO tcr_attendance (roll, department, attendance, attendance_date) VALUES ('$att_key', '$dep', '$att_value', '$date')";
$insert_row = $this->db->insert($sql);
}
但我得到的只是部门的第一价值。请有人帮助我在foreach循环中获取部门值的迭代以获得关注。
您可能希望查看PDO准备好的查询,因为目前您很容易受到SQL注入攻击。
即
$pdo = new PDO($dsn, $user, $password);
foreach ($attendance as $roll => $present) {
$statement = $pdo->prepare('
INSERT INTO tcr_attendance (roll, department, attendance, attendance_date)
VALUES (:roll, :department, :attendance, :attendance_date)
');
$statement->bindParam(':roll', $roll);
$statement->bindParam(':department', $department);
$statement->bindParam(':attendance', $present);
$statement->bindParam(':attendance_date', $date);
$statement->execute();
}
以上内容可以更好地防止恶意值直接传递到您的查询中。
至于你的问题:
如果没有其余的代码,以及你的表单是如何工作的,我很难准确地说出来,所以我只能给出粗略的指导,一个基本的方法就是。
$_POST
值。一种更优化的方式(取决于插入量)可能是进行单个插入查询(这意味着您不必为每个查询连接),因此您需要循环遍历数据,构建插入,然后执行它。