在PHP中删除命令问题

时间:2009-07-15 09:35:12

标签: php mysql

我也有类似的删除命令问题..

    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包含数组。它不会进入查询。

4 个答案:

答案 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