PHP/MySQL批量删除

3

在使用PHP(mysqli)时,有没有一种批量删除MySQL的方法?

对于插入操作,你可以采用以下方式:

insert into tbl (...) values (...) (...) (...) ...

有没有相应的东西可以用来删除?

1
相当于 WHEREDELETE FROM tbl WHERE id IN (1, 2, 3) - Clive
4个回答

8
delete from tbl where id IN (1,2,3)

或者

delete from tbl where id = 1 OR id = 2 OR email = 'admin@example.com'

通过先执行 select 操作,您可以确保删除正确的数据...

PS:对于 PHP,

<?
$ids = array(1,2,3);

$sql = "DELETE FROM tbl WHERE id IN (" . implode(',', $ids) . ")";
?>

或者

<?
$deleteme = array("id = 1", "id = 2", "email = 'admin@example.com'");

$sql = "DELETE FROM tbl WHERE " . implode(' OR ', $deleteme);
?>

2
不要像这样使用 OR,请改用 IN - Clive
1
啊,好的,我应该想到了。谢谢! - Dexter
啊,是的,我忘记了 IN.. 我会修改我的答案。 - Vyriel

3
如果我正确理解了您的问题,那么:
  • 这并不取决于PHP,而完全取决于所使用的SQL语句
  • 通常情况下,您会根据WHERE X = Y条件删除行。因此,如果您想要删除多行,只需将条件扩展为WHERE X = Y OR X = Z甚至WHERE X IN (Y, Z, ..)

2
您可以使用WHERE子句。例如:
DELETE FROM table WHERE Id in (0,1,...,n)

那样做不行,因为条件比仅匹配一个ID更复杂。 - Dexter
@Dexter,你读过"For example"这个字符串吗?无论如何,正如你所看到的,每个人都告诉了你同样的话。一定有原因。 - Aurelio De Rosa

0

在删除语句中使用In子句,这是最好的方法之一,你可以在In子句中传递数千个ID。我个人测试过2.5万个ID并且它能够正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接