使用 pdo 和复选框更新多行


Update multiple rows with pdo and checkboxes

我试图创建一个带有多重删除选项的邮件收件箱。 用户选择多个选择框,它们将通过提交按钮发布。 所以帖子值将是

message[] 1
message[] 2
submit delete

这些是正在使用的复选框:

message id1
<input type='checkbox' id='{inbox_id}' name='message[]' value='{$inbox_id}'/>
message id2
<input type='checkbox' id='{inbox_id}' name='message[]' value='{$inbox_id}'/>
<input class='button' type='submit' value='delete' name='submit'>

这是处理帖子的代码:

else if($_GET['p'] == "del") {
//some user checks
$message_del=$_POST['message'];
$N = count($message_del);
for($i=0; $i < $N; $i++)
{
    $result = $db->prepare("UPDATE `messages` SET `outbox`=0 AND `inbox`=0 WHERE `id`= :upid");
    $result->bindParam(':upid', $message_del[$i]);
    $result->execute();
}
  echo "messages archived";
  }else{echo "Your TV is lonely"; }

这是包含 6 条消息的数据库:

#   Name    Type        Collation       Attributes  Null    Default Extra
1   id      int(9)                      No          None    AUTO_INCREMENT
2   ip      varchar(255)utf8_unicode_ci No      
3   time    datetime                    Yes         NULL    
4   from    varchar(16) utf8_unicode_ci Yes         NULL    
5   to      varchar(16) utf8_unicode_ci Yes         NULL    
6   subject varchar(50) utf8_unicode_ci No      
7   message text        utf8_unicode_ci No          None    
8   read    int(1)          No  0   
9   inbox   int(1)          Yes 1   
10  outbox  int(1)          Yes 1   

id              ip        time  from    to          subject message read inbox outbox
1   00.00.00.00 10-3-2014 19:00 sender  receiver    subject message 1    1     0
2   00.00.00.00 11-3-2014 19:00 sender  receiver    subject message 1    1     0
3   00.00.00.00 12-3-2014 19:00 sender  receiver    subject message 1    1     0
4   00.00.00.00 13-3-2014 19:00 sender  receiver    subject message 0    1     0
5   00.00.00.00 14-3-2014 19:00 sender  receiver    subject message 1    0     1
6   00.00.00.00 15-3-2014 19:00 sender  receiver    subject message 0    0     1

但不知何故(我猜)查询没有运行。 恐怕我忘记了一些简单的事情。

这是 UPDATE 的单表语法:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

当你说SET outbox=0 AND inbox=0时,这仍然是有效的语法,但做一些与你可能期望的不同的事情。