我想更新通过复选框

时间:2016-08-05 10:26:21

标签: php mysql

通过在select查询中应用的此循环选中行。

 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);

感谢。

2 个答案:

答案 0 :(得分:0)

$_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);
    }
}

答案 1 :(得分:0)

您可以在查询中使用mysql -

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

哟不需要执行循环。