IF запрос в SQL УДАЛИТЬ в PHP - PullRequest
0 голосов
/ 21 июня 2019

, поэтому я получил страницу блога, где пользователи могут публиковать «статьи», и в этих статьях есть возможность писать комментарии. Я хочу создать запрос IF в PHP, чтобы удалить статью, если есть только статья и нет комментария, или если есть комментарий, удалите статью и комментарий в базе данных.

$sql = "DELETE beitrag , kommentar 
        FROM beitrag 
        INNER JOIN kommentar 
        WHERE beitrag.beitrag_id= kommentar.beitrag_id 
          and beitrag.beitrag_id=$pid";

В настоящее время так выглядит мой DELTE. Удаляет, только если есть статья и комментарий.

1 Ответ

2 голосов
/ 21 июня 2019

Вы должны использовать вместо LEFT JOIN. Используйте правильное соединение (используя ON) и используйте подготовленный оператор, см. Как я могу предотвратить внедрение SQL в PHP? .

LEFT JOIN с удалением означает, что вы удаляете из основной таблицы, но если в правой таблице есть совпадения (для вас это комментарии), удалите их тоже.

$sql = "DELETE beitrag, kommentar 
        FROM beitrag 
        LEFT JOIN kommentar 
          ON beitrag.beitrag_id= kommentar.beitrag_id 
        WHERE beitrag.beitrag_id = $pid";

Хотя вы можете установить отношение внешнего ключа для комментариев, чтобы при удалении статьи комментарии также удалялись (используя атрибут ON DELETE CASCADE). Таким образом, вы просто удаляете статью, и комментарии следующие.

ALTER TABLE kommentar 
ADD FOREIGN KEY (beitrag_id) REFERENCES beitrag(beitrag_id)
ON DELETE CASCADE;

Затем удалите статью с простым запросом удаления

$sql = "DELETE FROM beitrag WHERE beitrag_id = $pid";
...