2011-03-02 33 views
0

我们在MySQL数据库中显示结果,其中有复选框。如果用户勾选5行并单击删除按钮,我们如何同时删除多行?对mysql条目使用PHP的批量操作

+0

接受你最近的问题。 – hsz 2011-03-02 16:57:38

+2

所以我们应该为你整理一个表单处理系统,而不知道你的数据库结构如何,表单是否被设计等。 “我们希望代码”在这里不会赢得任何朋友。 – 2011-03-02 16:58:27

+1

您是否试图问如何显示数据库中的行,并使用复选框标记该行以进行删除,以便在发布页面时删除所有选中的行? – TheJubilex 2011-03-02 16:58:32

回答

2

HTML:

<form method="post"> 

    <input type="checkbox" name="id[]" value="123" /> Element 1 <br/> 
    <input type="checkbox" name="id[]" value="5434" /> Element 2 <br/> 
    <input type="checkbox" name="id[]" value="24" /> Element 3 <br/> 
    <input type="checkbox" name="id[]" value="76" /> Element 4 <br/> 

    <input type="submit" value="delete" /> 

</form> 

PHP:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

    $ids = array_walk($_POST['id'], 'intval'); 
    mysql_query('DELETE FROM table WHERE id IN (' . implode(',', $ids) . ')'); 

} 

附:我想要点数!

+0

感谢hsz给你回复。 – seoppc 2011-03-02 17:42:41

+0

'array_walk()'函数中的''intval''不应该有'$ _POST ['id']'吗?我尝试按照它的方式执行你的回答,并且我得到了一个致命的错误....我扭转了论据的立场,错误消失了。 – jcobhams 2013-09-05 16:43:53

+0

你是对的Vyren。 – hsz 2013-09-05 17:34:19

1

我不会给你的PHP代码,但建立一个SQL查询像这样将解决你的问题:

DELETE FROM foo WHERE id IN (…); 

有关详细信息,请参阅manual

1

随着PDOStatement对象这样

$statement = "DELETE FROM table WHERE id = ?"; 
$conn = new PDO($dns,$user,$pass); 
$conn->beginTransaction(); 
$query = $conn->prepare($statement); 
foreach($params as $p){ //$params are your checked id's 
    $query->bindParam(1,$p); 
    if($query->execute()){ 
     echo "ok"; 
    }else{ 
     $conn->rollBack(); 
     exit("Error"); 
    } 
} 
$conn->commit(); 
+0

感谢JuanToroMarty的快速回复 – seoppc 2011-03-02 17:43:01