2015-11-02 79 views
2

我正在开发一个简单的收费系统,并使用PDO。 但我似乎无法使用PDO同时使用多个值的更新中... 看吧:PDO在UPDATE中准备语句多个ID

// GET MESSAGES ID AND REPLACE '-' WITH ',' 
    $mid = explode("," , str_replace('-' , ',' , $mid)); 
    $isread = "read"; 

    $stmt = $conn->prepare("UPDATE `mshop_pms` SET `readperm` = ? WHERE `mid` IN (?)"); 
    $stmt->execute(array($isread, array($mid))); 

我怎样才能做到这一点?并执行此操作:

$stmt->execute(array($isread, $mid)); 

没有爆炸它只是更新第一行。

在此先感谢。

回答

3

它不会以这种方式工作。您需要迭代爆炸阵列,然后继续更新。

下面是一个例子: -

// GET MESSAGES ID AND REPLACE '-' WITH ',' 
    $mid = explode("," , str_replace('-' , ',' , $mid)); 
    $isread = "read"; 
try 
{ 
$stmt = $conn->prepare("UPDATE `mshop_pms` SET `readperm` = :readperm WHERE `mid` = :mid"); 
} 
catch(PDOException $e) 
{ 
echo $e->getMessage(); 
} 
    //now update and iterate 
foreach($mid as $m) 
{ 
$s->bindParam(':readperm', $isread); 
$s->bindParam(':mid', $m); 
$s->execute(); 
}