Понятно что автор не удосужился просто понять код который привел сам, в нем нужно поправить sql запрос
UPDATE `users` SET `balance` = `balance` + ? WHERE `user_id` = ?
И настроить периодический вызов метода addBalance
... но это простая и
неправильная практика построения финансовых приложений.
Дело в том что финансовые приложения должны давать возможность анализировать историю (например чтобы можно было делать аналитический отчет на период), а еще это нужно чтобы выявлять и решать проблемы с логикой и кодом, отменять транзакции (а это один из способов решения многих других с внешними причинами) и т.п.
Поэтому, в базе данных должны храниться все операции, а итоговый баланс должен считаться тригерами на основе этих данных (только не советую тригером каждый раз считать сумму всех операций, нужно хранить баланс, дату обновления и суммировать новые сделки с ним)