我在理解该程序的行为时遇到问题,下面是使用 IN 运算符删除电子邮件地址的简单代码
$emails = $_POST['ids'];
$sql = "DELETE FROM newsletter where email ";
$condition = sprintf('IN ("%s")',implode(' "," ',$_POST['ids']));
$sql = $sql.$condition;
include '../includes/db.php';
$r = mysql_query($sql);
echo $sql;
它只删除一个电子邮件 ID 并返回 true 。我怎样才能让它以删除所有电子邮件的方式运行。
下面是使用上述代码构建的查询。
DELETE FROM newsletter where email IN ("adfadsf@gmail.com "," asdfasfasf@gmail.com "," kjhkhsd@assdfsdf.sdfsf "," shit@gshit.com "," someother@gmail.com")
是不是删除方式不对?
最佳答案
而不是:
$condition = sprintf('IN ("%s")',implode(' "," ',$_POST['ids']));
做:
$condition = sprintf('IN ("%s")',implode('", "',$_POST['ids']));
IN 运算符将字段内容与值完全匹配。值开头和结尾的空格可能会导致您出现问题。
关于php - 如何在 mysql php 中使用 IN OPERATOR 删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745270/