我也有类似的删除命令问题..
function deleteUsers($userID) {
foreach($userID as $key => $val)
{
$query = "DELETE FROM members WHERE member_id = '$val'";
$result = mysql_query($query);
}
//$query = "DELETE FROM members WHERE member_id = $userID";
//$result = mysql_query($query);
if($result)
{
return 'yes';
}
}
它没有执行多重删除.... $ userID包含数组。它不会进入查询。
答案 0 :(得分:3)
使用多个ID时,使用变量IN(1,2,3)格式而不是简单相等。此外,如果您有多个ID,则该变量应该称为$ userIDs?
if(count($userID) > 0) {
$query = 'DELETE FROM members WHERE member_id IN ('. implode(',', $userID) .')';
}
答案 1 :(得分:2)
没有foreach:
function deleteUsers($userID) {
if (count($userID)) {
$query = "DELETE FROM `members` WHERE `member_id` IN (".implode(",", array_values($userID)).");";
if (mysql_query($query)) { return true; }
}
return false;
}
答案 2 :(得分:1)
这将使函数理解数组以及单个整数:
function deleteUsers($u) {
$condition = is_array($u)
? "member_id IN (" . implode(',', $u) . ")"
: "member_id = " . (int)$u;
$res = mysql_query("DELETE FROM `members` WHERE $condition");
return $res ? true : false;
}
请注意,您的参数未正确转义且无法信任。要了解有关转义SQL和防止注入攻击的更多信息,请阅读Prepared Statements。
答案 3 :(得分:0)
为了热爱互联网,请不要自己构建SQL查询。使用PDO。