我有一些这样的示例数据,它们是从数据库中生成的 sample data
我想通过相应行中的分配按钮插入单行值 例如。通过单击第一行分配按钮,我想插入“CSE412”、“人工智能”、“3” 我的问题是,当我单击任何分配按钮时,从数据库生成的所有数据都将插入到数据库中。 我的尝试是
<?php
$stmt = $conn->prepare("SELECT * FROM tbl_course");
$stmt->execute();
$i = 0;
while($row = $stmt->fetch()) {
$student_id = $_GET['id'];
$course_id = $row['id'];
?>
<form class="" action="" method="post">
<tr style="border-top: 1px solid #32383e;">
<td><?php echo ++$i; ?></td>
<td><?php echo $row['course_code']; ?></td>
<td><?php echo $row['course_title']; ?></td>
<td><?php echo $row['credit']; ?></td>
<td>
<?php
if ($_SERVER["REQUEST_METHOD"]=="POST"){
$sql = "INSERT INTO tbl_course_enroll (student_id, course_id) VALUES ('$student_id', '$course_id')";
$conn->exec($sql);
}
?>
<input type="submit" name="" value="Assign" class="btn btn-primary">
</form>
</td>
</tr>
<?php
}
$conn = null;
?>
最佳答案
首先,将 if ($_SERVER["REQUEST_METHOD"]=="POST"){ ... }
block 放在 while()
之外循环,因为它导致重复 INSERT
操作。现在的问题是,如何在点击相应的Assign按钮后插入特定行的数据呢?这是解决方案:
按以下方式更改表单的
action
属性,<form ... action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" ...>
在 Assign 按钮的
name
属性中分配一个值。<input type="submit" name="assign" value="Assign" class="btn btn-primary">
并且当用户点击分配按钮时,以下列方式存储相应的行详细信息,
if (isset($_POST['assign'])){ $stmt = $conn->prepare("INSERT INTO tbl_course_enroll (student_id, course_id) VALUES (?,?)"); $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT); $stmt->bindParam(2, $_GET['cid'], PDO::PARAM_STR, 12); if($stmt->execute()){ // INSERT operation successful } }
完整代码如下
<?php
if (isset($_POST['assign'])){
$stmt = $conn->prepare("INSERT INTO tbl_course_enroll (student_id, course_id) VALUES (?,?)");
$stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
$stmt->bindParam(2, $_GET['cid'], PDO::PARAM_STR, 12);
if($stmt->execute()){
// INSERT operation successful
}
}
$stmt = $conn->prepare("SELECT * FROM tbl_course");
$stmt->execute();
$i = 0;
while($row = $stmt->fetch()) {
$student_id = $_GET['id'];
$course_id = $row['id'];
?>
<form class="" action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" method="post">
<tr style="border-top: 1px solid #32383e;">
<td><?php echo ++$i; ?></td>
<td><?php echo $row['course_code']; ?></td>
<td><?php echo $row['course_title']; ?></td>
<td><?php echo $row['credit']; ?></td>
<td>
<input type="submit" name="assign" value="Assign" class="btn btn-primary">
</td>
</tr>
</form>
<?php
}
$conn = null;
?>
关于php - 从 HTML 表格中插入单行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256559/