在 PHP 中删除多个项目

Posted

技术标签:

【中文标题】在 PHP 中删除多个项目【英文标题】:Deleting multiple items in PHP 【发布时间】:2009-07-14 15:14:01 【问题描述】:

我有一个需要通过的项目列表,应该将其删除。如何在 php 中做到这一点?

$query = "DELETE from members WHERE member_id ='$chan[2]' ";

$chan[2] 保存多个值,但只删除一个。

【问题讨论】:

您需要更加具体。当您说“多个值”时,您是什么意思?数组?逗号分隔值? 【参考方案1】:

$chan[2] 引用 $chan 数组中的一个元素。所以,我认为你的意思是 $chan 有多个值。

试试这个:


$query = "DELETE FROM members WHERE member_id IN (" . implode(", ", $chan) . ");";

【讨论】:

请注意,该代码不能防止 SQL 注入!确保在使用该代码之前清理 $chan 中的所有数据!【参考方案2】:

使用

$query = "DELETE FROM members WHERE member_id IN (" . join("," $chan[2]) . ")";

如果$chan[2] 持有要删除的id 列表。还要确保只将数值传递到查询中以避免 sql 注入问题。

【讨论】:

【参考方案3】:
$member_ids = implode(", ", $chan);
"$query = "DELETE from members WHERE member_id IN ($member_ids)";

【讨论】:

【参考方案4】:

相等运算符将只删除与给定值完全匹配的值。如果数组中有多个 id,则需要使用另一个条件。您可以使用 mysql 函数FIND_IN_SET(),例如,如果那是您的数据库:

$ids = array(1, 2, 3);
$query = "DELETE FROM members WHERE FIND_IN_SET(member_id, '" . implode(',', $ids) . "')";

还有一件事:如果您从用户那里收到了 id,请务必非常小心。 It might contain bogus data。使用mysql_escape_string() 进行消毒:

$ids = array_map('mysql_escape_string', $ids);

【讨论】:

【参考方案5】:

上面给出的内爆答案是正确的方法。纯粹是为了让那里发生的事情非常清楚;如果 implode 不存在,这是你要使用的代码(我认为 $chan 是一个二维数组,所以 $chan[2] 有 5 个成员,否则使用 $chan)

// start roll-your-own $member_id_cond = implode(", ",$chan[2]);
$member_id_cond = "";
foreach( $chan[2] as $key => $data) 
     $member_id_cond .= $data . ", ";
     if($key == 4)    //this is just to remove the last comma
           $member_id_cond = sub_str($member_id_cond, 0, -2);
     
 
 //end implode 
 $query = "DELETE FROM members WHERE member_id IN ($member_id_cond)";

【讨论】:

以上是关于在 PHP 中删除多个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中从多个数组中删除空行元素

动态添加/删除多个输入字段和输入行 PHP(动态表单中的动态表单)

从 HomeDirectory 中删除多个项目

如何使用 GraphQL 删除多个项目?

php 在Yoast SEO中更改或删除OpenGraph输出的代码片段。此代码中有多个代码段。

如何在 Go 中从 DynamoDB 表中删除多个项目