php - 从 HTML 表格中插入单行数据

标签 php mysql

我有一些这样的示例数据,它们是从数据库中生成的 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/

相关文章:

apache - Mac 上的 PHP 配置 - 不渲染

php - sql如何统计数组中的每一项

PHP PDO 更新有 2 个表

mysqldump 命令不返回任何数据

java - JPA 存储库 - 改进 findAll() 性能

c# - 使用 Windows 窗体更新 mysql 数据库总是给出奇怪的错误消息

php - 成功响应时显示 div

php - 如何找到前面没有另一个特定单词的单词?

php - 如果此行为空,那么它将显示另一行

mysql - 我在哪里可以了解更高级的 ActiveRecord 查询?