使用pdo和复选框更新多行

时间:2015-01-10 15:50:21

标签: php mysql pdo

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

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

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

1 个答案:

答案 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时,这仍然是有效的语法,但会做出与你预期的不同的事情。