Удалить, когда 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})))";