It would help more if you told me what you were seeing. I mentioned that you should add some debugging code to print out the value of $cat prior to your database update. I do see that you have a print occurring after the database update. Does this get printed by your script? Does it have the correct value for $cat here even though your database is placing a "0" into this record? Are you sure an update is actually occurring in the database? (I.e. is your code reaching this point in its execution?)

I also notice that you may have ignored the advice regarding the use of placeholders and bind variables. You're using user-provided input here directly in your SQL query, which is a horribly bad thing to do. Hopefully you've taken this into consideration and will fix this after you've identified your more immediate problems.