Mysql
 sql >> Base de données >  >> RDS >> Mysql

La fonction récursive PHP pour supprimer tous les nœuds enfants provoque un stackoverflow

Le problème est dans l'appel récursif :

remrecurs($curitem['parent']);

ça devrait être :

remrecurs($curitem['id']);

Pourquoi ?

Votre objectif est de supprimer la ligne avec l'identifiant donné. Vous vérifiez d'abord s'il a des enfants. Si oui, vous devez appeler la suppression récursive sur chacun des enfants pas encore sur le parent. Vous appelez à nouveau la fonction de manière récursive sur le parent. Cela conduit à des appels récursifs infinis, vous écrasez la pile et plantez.