Php 从HTML表中插入单行数据
我有一些这样的示例数据,它是从数据库生成的 我只想通过“分配”按钮在相应的行中插入一行值 例如,通过单击第一行分配按钮,我想插入“CSE412”、“人工智能”、“3” 我的问题是,当我单击任意一个“分配”按钮时,从数据库生成的所有数据都会插入到数据库中。 我的尝试是Php 从HTML表中插入单行数据,php,mysql,Php,Mysql,我有一些这样的示例数据,它是从数据库生成的 我只想通过“分配”按钮在相应的行中插入一行值 例如,通过单击第一行分配按钮,我想插入“CSE412”、“人工智能”、“3” 我的问题是,当我单击任意一个“分配”按钮时,从数据库生成的所有数据都会插入到数据库中。 我的尝试是 <?php $stmt = $conn->prepare("SELECT * FROM tbl_course"); $stmt->execute(); $i = 0; while(
<?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($\u SERVER[“REQUEST\u METHOD”]==“POST”){…}
块置于while()
循环之外,因为它会导致重复的INSERT
操作。现在的问题是,如何在单击相应的分配按钮后插入特定的行数据?以下是解决方案:
- 按以下方式更改表单的
操作
属性
<form ... action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" ...>
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
}
}
- 当用户点击Assign按钮时,按以下方式存储相应的行详细信息
<form ... action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" ...>
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;
?>
@ShafikShaon,这里我假设student\u id列为整数类型,course\u id列为字符串类型。出现问题时,不会将数据重定向到另一个page@ShafikShaon你说的数据重定向到另一个页面是什么意思?表单将把数据提交到它当前所在的任何页面。假设我的表单在course.php文件中,我从index.php转到course.php文件。表单提交后,它将自动转到索引。php@ShafikShaon从哪个页面进入course.php页面并不重要。但是,如果整个表单和相应的处理逻辑都在course.php页面中,那么请按照以下方式更改表单的action
属性,action=“course.php?sid=&cid=”