IMO od waliłeś kaszankę w całym kodzie. Tak się nie powinno pisać, ale nie będę punktować tego, gdyż nie wiem czy Cię to interesuje.
Domyślam się, że nie posiadasz Xdebuga, spróbuj więc debugować to ręcznie. Masz funkcje var_dumpa, die. Sprawdź jakie wartości przychodzą i czy przychodzą. Sprawdź jak wygląda finalnie sql. Spróbuj go odpalić na bazie i sprawdź efekty.