我想更新通过复选框选择的多行


I want to update multiple rows which are selected through checkbox

通过复选框选择行,通过此循环应用于选择查询。

 while($row = mysql_fetch_array($result, MYSQL_ASSOC))
  {
    echo '<tr>';
    $res = $row['userid'];
    echo "<td><input type='checkbox' name='chk[]' value='$res'></td>";
   echo 
    "<td>ID :{$row['userid']}  <br> </td>".
    "<td>ID :{$row['id']}  <br> </td>".
    "<td>{$row['name']}  <br> </td>".
    "<td>{$row['shifttime']}  <br> </td></tr>";
      $i++;    
   } 

然后想通过 id 从复选框获取来更新我的数据库

 if(isset($_POST['chk'])){
    $shift=$_POST['shiftTime'];
    $chkarray = $_POST['chk'];
    foreach ($chkarray as $val) {
    $sql = "UPDATE user_shift_test2 SET shifttime ='$shift' WHERE id='" . $_POST["chk"] . "' ";
    $result = mysql_query( $sql, $conn);

谢谢。

你可以在查询中使用 mysql -

$sql = "UPDATE user_shift_test2 SET shifttime = $shift WHERE id IN $_POST['chk'] ";

哟不需要执行循环。

$_POST["chk"]的值是数组,您应该使用运算符IN

不要使用 foreach 此代码应该有效。

$vals = implode(",", $_POST["chk"]);
$sql = "UPDATE user_shift_test2 SET shifttime ='$shift' WHERE id IN (" . $vals . ")";
$result = mysql_query( $sql, $conn);

编辑:正如您所说,您想使用 foreach ,实际上不建议这样做,因为它将使用多个查询进行更新。仍然这里有一个应该可以工作的代码片段。

if(isset($_POST['chk'])){
    $shift = $_POST['shiftTime'];
    $chkarray = $_POST['chk'];
    foreach ($chkarray as $val) {
        $sql = "UPDATE user_shift_test2 SET shifttime ='" . $shift . "' WHERE id= '" . $val . "'";
        $result = mysql_query( $sql, $conn);
    }
}