Mein MySQL sieht so aus: (Der Name der Tabelle ist Kategorie)
%Vor%wo:
Das ist es, was ich gerade versuche:
%Vor%Was aus irgendeinem Grund nicht funktioniert und abstürzt .. Irgendeine Idee, was ich falsch mache?
Das Problem liegt im rekursiven Aufruf:
%Vor%sollte es sein:
%Vor%Warum?
Ihr Ziel ist es, die Zeile mit der angegebenen ID zu löschen. Zuerst überprüfen Sie, ob es Kinder hat. Wenn ja, müssen Sie das rekursive Löschen für jedes der untergeordneten Elemente erneut auf dem übergeordneten Element aufrufen. Sie rufen die Funktion rekursiv erneut auf dem Elternobjekt auf. Dies führt zu unendlichen rekursiven Aufrufen, Sie schlagen den Stapel und stürzen ab.
Alternativ könnten Sie die Datenbank damit umgehen lassen. In MySQL führt dies automatisch eine InnoDB ON DELETE CASCADE
aus .
Wurzelknoten sollten NULL
als übergeordnetes Element haben (nicht 0
, wie einige Leute in Adjacency List-Tabellen zu verwenden scheinen).
Tags und Links php mysql function recursion stack-overflow