Удалить, когда UserID = 1 и CourseID не в массиве?

Это код SQL, который я использую:

По какой-то причине он удаляет все записи для идентификатора пользователя, но не учитывает массив NOT IN. Мне нужно удалить его, только если идентификатор пользователя = текущий пользователь и ИД курса этого пользователя не находится в массиве..

mysql_query("DELETE FROM tblLinkUserCourse WHERE ((UserID=$CurrentUserID) AND (CourseID NOT IN ({$new_array})))");

3 ответа

Решение

1) Удалить все ненужное () из запроса.

2) Проверить $new_array содержит все ваши course_id или нет и построен как строка. Если он не создан как строка и запятая, используйте этот код.

$new_array = implode(',', $new_array);
mysql_query("DELETE FROM tblLinkUserCourse WHERE UserID=$CurrentUserID AND CourseID NOT IN ({$new_array})");

$ New_array PHP массив или строка подготовлены для запроса? Если это массив, вы должны использовать:

$new_array = implod(',', $new_array);
mysql_query("DELETE FROM tblLinkUserCourse WHERE ((UserID=$CurrentUserID) AND (CourseID NOT IN ({$new_array})))");

Пытаться:

$new_array  = "'".implode("', ", $new_array)."'";
$sql        = "DELETE FROM tblLinkUserCourse WHERE ((UserID=$CurrentUserID) AND (CourseID NOT IN ({$new_array})))";
Другие вопросы по тегам