Dass noch keinem sowas auffällt...
Du schreibst, solange eine ID gefunden wird, soll true zurückgegeben werden. Was soll das bewirken?
Es wird genau einmal true zurückgegeben, danach ist nämlich die Funktion beendet und es gibt kein while mehr.
Außerdem ists keine gute Idee, einmal einen bool und dann wieder eine Zahl zurückzugeben.
Und eine Schleife über alle Datensätze ist an sich auch keine gute Idee. Such dir doch die höchste ID mit MAX und erhöhe das dann nochmal um eins und gut.