Удалить команду Issue в PHP - PullRequest
0 голосов
/ 15 июля 2009

У меня похожая проблема с командой удаления ..

    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 ]

3 голосов
/ 15 июля 2009

При использовании нескольких идентификаторов используйте переменный формат IN (1,2,3), а не простое равенство. Также, если у вас более одного идентификатора, возможно, переменная должна называться $ userIDs?

if(count($userID) > 0) {
  $query = 'DELETE FROM members WHERE member_id IN ('. implode(',', $userID) .')';
}
2 голосов
/ 15 июля 2009

без 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;
}
1 голос
/ 15 июля 2009

Это заставит функцию понимать массив, а также одно целое число:

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 и предотвратить инъекционные атаки, прочитайте о Подготовленные операторы .

0 голосов
/ 15 октября 2009

Пожалуйста, ради любви к Интернету, не создавайте SQL-запрос самостоятельно. Используйте PDO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...