Php 从复选框中获取值

Php 从复选框中获取值,php,html,mysql,Php,Html,Mysql,我正在尝试使用复选框更新我的表。这个过程是这样的,每一行都有一个复选框,如果我选中其中一个复选框并单击submit按钮,选中的行将用特定的值更新一列 这就是我所做的 <tbody> <?php while ($fetch = mysqli_fetch_array($query,MYSQLI_BOTH)) { ?> <tr> <td><input type="checkbox" name="approveArr[]

我正在尝试使用复选框更新我的表。这个过程是这样的,每一行都有一个复选框,如果我选中其中一个复选框并单击submit按钮,选中的行将用特定的值更新一列

这就是我所做的

<tbody>

  <?php
  while ($fetch = mysqli_fetch_array($query,MYSQLI_BOTH)) {
   ?>
  <tr>

    <td><input type="checkbox" name="approveArr[]" value=" <?php $prsid = $fetch['prsid']; ?>"></td>
    <?php echo "<td>". $prsno = $fetch['prsno'] ."</td>" ;?>
    <?php echo "<td>". $qty = $fetch['qty'] ."</td>" ;?>
    <?php echo "<td>". $productcode = $fetch['productcode'] ."</td>" ;?>
    <?php echo "<td>". $productdescription = $fetch['productdescription'] ."</td>" ;?>
    <?php echo "<td>". $vendors = $fetch['vendors'] ."</td>" ;?>
    <?php echo "<td>". $prsdate = $fetch['prsdate'] ."</td>" ;?>
    <?php echo "<td>". $status = $fetch['status'] ."</td>"; ?>
  </tr>

<?php } ?>

<?php
  if(isset($_POST['submits'])){
    print_r($_POST);
    $update = "UPDATE prs set status='Approved' where id='$prsid'";
    $query = mysqli_query($conn,$update);
  }

?>
</tbody>


我在下面的代码中做了一个假设,我添加了表单和表元素来完成这幅图——但是在您的原始代码中,您让数据库容易受到sql注入的攻击,我在这里尝试更正

<form method='post'>
    <table>
        <tbody>

        <?php

            while ( $fetch = mysqli_fetch_array( $query,MYSQLI_BOTH ) ) {
                /* assign row values to variables... */
                $prsid = $fetch['prsid'];
                $prsno = $fetch['prsno'];
                $qty = $fetch['qty'];
                $productcode = $fetch['productcode'];
                $productdescription = $fetch['productdescription'];
                $vendors = $fetch['vendors'];
                $prsdate = $fetch['prsdate'];
                $status = $fetch['status'];

                /* use placeholders to represetn each variable in the output html and assign relevant value for printing */
                printf('
                    <tr>
                        <td><input type="checkbox" name="approveArr[]" value="%s>"></td>
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                    </tr>',
                    /* the variables */
                    $prsid,
                    $prsno,
                    $qty,
                    $productcode,
                    $productdescription,
                    $vendors,
                    $prsdate,
                    $status
                );
            }

        ?>
        </tbody>
    </table>
    <input name='submits' type='submit' />
</form>


<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['submits'] ) ){

        $approveArr=$_POST['approveArr'];

        $sql='update prs set status='approved' where id=?';
        $stmt=$conn->prepare($sql);

        $stmt->bind_param( 'i', $status );
        foreach( $approveArr as $status ) $stmt->execute();
    }
?>


问题是什么?
print\r($\u POST)中的内容?在循环中定义
$prsid
意味着只有最后一个值可用于update子句。当然,您想使用
approveArr
?print\u r($\u POST)中的发布值;仅用于调试目的