dunque...
prima di tutto non capisco perchè a volte restituisce 0 ed altre un valore.
Prova a vedere se la riga viene effettivamente aggiunta al db (usa phpmyadmin o come diavolo si chiama).
Se no, hai ripulito le variabili da tutti i caratteri che possono andare in conflitto con mysql (potresti utilizzare http://php.net/manual/en/function.my...ape-string.php)
Prova anche ad utilizzare la funzione che ti ho suggerito in abbinamento al tuo metodo e vedi cosa succede nei casi in cui ti da il problema.