Я хочу использовать SQL и PHP для удаления определенной строки, событий и местоположения события внешнего ключа вместе с ним. Я попытался использовать функцию внутреннего соединения, но это дало мне ошибку. Есть идеи?
DELETE FROM Events, EventLocation JOIN ON EventLocation.EventLocationID = Events.EventLocationID WHERE EventID = '".$_POST["id"]."' AND EventLocationID = '".$_POST["id"]."'
использовать внутреннее соединение
DELETE Events, EventLocation FROM Events INNER JOIN EventLocation WHERE Events.EventID=EventLocation.EventID
Нижеприведенный запрос работает нормально.
DELETE Events, EventLocation
FROM Events INNER JOIN EventLocation
WHERE Events.EventID=EventLocation.EventID
Но в этом случае легко обрабатывается, если таблица EventLocation
, устанавливающая Каскад при удалении с EventID
whwres EventID
, является внешним ключом таблицы EventLocation
и первичным ключом таблицы Events
.
Затем вы просто удаляете строку Events
. Таким образом, строка EventLocation
удаляется автоматически вместе с Events
.
Имейте в виду, что вы должны использовать НИКОГДА
$_POST
(или эквивалентные переменные) непосредственно в операторах SQL! Вместо этого вы должны использовать подготовленные заявления, привязав ваши$_POST
переменные к параметрам. Учитывая приведенный выше код, у вас есть серьезная уязвимость в безопасности — злоумышленник может легкоDROP
всю вашу базу данных или, возможно, даже хуже.