Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die rekursive PHP-Funktion zum Löschen aller untergeordneten Knoten verursacht einen Stapelüberlauf

Das Problem liegt im rekursiven Aufruf:

remrecurs($curitem['parent']);

es sollte sein:

remrecurs($curitem['id']);

Warum?

Ihr Ziel ist es, die Zeile mit der angegebenen ID zu löschen. Zuerst prüfen Sie, ob es Kinder hat. Wenn ja, müssen Sie das rekursive Löschen für jedes der Kinder aufrufen nicht wieder auf den Elternteil. Sie rufen die Funktion wieder rekursiv auf dem Elternelement auf. Dies führt zu endlosen rekursiven Aufrufen, Sie zerstören den Stack und stürzen ab