2017-09-16 38 views
1

我有这样一些样本数据是从数据库中生成 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; 
?> 

回答

1

首先,采取if ($_SERVER["REQUEST_METHOD"]=="POST"){ ... }while()循环之外,因为它是造成重复INSERT操作。现在的问题是,如何在点击相应的Assign按钮后插入特定的行数据?这里的解决方案:

  • 更改形式的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"> 
    
  • 而当用户点击分配按钮,存储在以下方式中的对应行的细节,

    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; 
?> 
+0

@ShafikShaon,在这里我假设* student_id *列是整数类型,并且* course_id * colu mn是字符串类型。 –

+0

太棒了。这将现在工作 –

+0

问题出现这将不会插入数据重定向到另一个页面 –