2013-07-15 53 views
1
$favour_delete=$_GET['favour_delete']; 
$favour_delete=implode(",",$favour_delete); 

$delete=$db->prepare("DELETE FROM favour WHERE post_id IN (:favour_delete) && user_id=:user_id"); 
$delete->bindValue(':favour_delete', $favour_delete, PDO::PARAM_STR); 
$delete->bindValue(':user_id', $user_id, PDO::PARAM_STR); 

我有一个mysql删除数组中的多行。用户勾选复选框并将其发送到数组中。Mysql删除数组中的多行

我implode它成字符串和使用IN(),我不知道哪里出错了,它只删除一行。

post_id user_id 
2  1 
3  1 
4  2 

所以,如果用户:1送$favour_delete=array(2,3);应该删除第一排和第二排

+0

它应该删除多少条记录? – Hituptony

+0

取决于用户打勾,它的数组,如果用户打勾3,它应该删除3行 – user2178521

+0

发布可以在'favour_delete'中发送的数据示例。 – DontVoteMeDown

回答

0

遗憾的是,截至目前现在有办法参数化IN子句中的查询这里你最好的选择如下。

<?php 
$favour_delete=$_GET['favour_delete']; 
$favour_delete=array_map('intval',$favour_delete); 

$delete=$db->prepare("DELETE FROM favour WHERE post_id IN (".implode(",",$favor_delete).") && user_id=:user_id"); 
$delete->bindValue(':user_id', $user_id, PDO::PARAM_STR); 
+1

为什么在第2行使用'explode'? '$ _GET ['favour_delete']'已经是一个数组了。 –

+0

@Sean好点。 – Orangepill