Php使用复选框

时间:2015-07-21 13:24:32

标签: php checkbox

你好我想用复选框时用布尔值(1)更新所有行,但是当我尝试时我不能这样做..他选择并更新所有" $ id&# 34;或者只更新我的cours表的最后一个$ id。

有人可以帮忙吗? :)

编辑:

 <form action='' method='POST'>

        <?php


        require 'inc/db.php';
        $req = $pdo->query('SELECT * FROM cours WHERE isValid = 0' );
        while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
            $originalDate = $row['date'];
            $newDate = date("d-m-Y", strtotime($originalDate));
            $id = $row['id'];
            echo "<tr>";
            echo "<td>" . htmlspecialchars($newDate) . "</td>";
            echo "<td>" . htmlspecialchars($row['hours']) . "</td>";
            echo "<td>" . htmlspecialchars($row['iduser']) . " / " . htmlspecialchars($row['lastname']) . " / " . htmlspecialchars($row['firstname']) . "</td>";
            echo "<td>" . htmlspecialchars($row['courses']) . "</td>";
            echo "<td><input type='checkbox' name='check[$id]' value='1' >" . $id . "</td> ";
            print "</tr>";
        }
        print "</table>";

                if(isset($_POST['check']) && count($_POST['check'] )) {
                $ids = implode($_POST['check']);
                $req2 = $pdo->prepare("UPDATE cours SET isValid = 1 WHERE id IN ({$ids})");
                $req2->execute();
                var_dump($_POST['check']);

                }


        ?>
            <button type="submit" name="send" class="btn btn-primary center-block" >send</button>
        </form>

1 个答案:

答案 0 :(得分:0)

if(isset($_POST['check']) && count($_POST['check'])) {
   $ids = implode(', ', $_POST['check']);
   $sql = "UPDATE cours SET isValid = 1 WHERE id IN ({$ids})";
   //run sql
}

当然,它仍然像你当前的代码一样容易受到sql注入攻击。您希望确保所有ID实际上都是整数,或者在语句中使用参数。

您可能无法调试此问题,因为您将var_dump置于循环之外。因此,您只能看到最后一个身份。