你好我想用复选框时用布尔值(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>
答案 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置于循环之外。因此,您只能看到最后一个身份。