#1 Te has dejado bastante información por el camino.
PHP, qué versión?
La BD es mySQL? qué versión?
Qué error te da?
La query que haces yo la veo bien.
Puede que te estés rayando con esa línea y el problema está en lo que haces entre la query y el free. Piensa que PHP se ejecuta como script (no compilado), así que dejarte un punto y coma o lo que sea que no le cuadre puede hacer que te aparezca el error en una línea pero que en realidad el error se produzca antes.
Un fragmento de código más amplio también sería de agradecer. Porque al ser un update igual no tienes nada entre las dos sentencias... pero si no compruebas el resultado de la query (con un if(query === TRUE) por ejemplo) igual te está dando un error la query y te peta cuando intentas hace null->free() (porque la query no te ha dado el objeto result esperado).