我有一些这样的样本数据,它是从数据库生成的 sample data
我想通过相应行中的Assign按钮插入单行值 例如。通过单击第一行分配按钮我要插入'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;
?>
答案 0 :(得分:1)
首先,将if ($_SERVER["REQUEST_METHOD"]=="POST"){ ... }
块置于while()
循环之外,因为它会导致重复INSERT
操作。现在的问题是,如何在单击相应的分配按钮后插入特定的行数据?这是解决方案:
按以下方式更改表单的action
属性,
<form ... action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" ...>
在分配按钮的name
属性中指定一个值。
<input type="submit" name="assign" value="Assign" class="btn btn-primary">
当用户点击 Assign 按钮时,按以下方式存储相应的行详细信息,
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;
?>