当减去钱时,带有小数的SQL错误?

时间:2017-02-12 07:15:08

标签: php mysql sql payment currency

我正在存储带有小数(12,3)的用户资金。当我向用户收取一些金额时它可以工作但是当我用0收费时,有时候查询返回false,有时返回true.false和true doesn&#39 ; t依赖于任何东西,我认为这是sql bug。我的查询如下:

update `user_account`
set `total_money` = `total_money` - ?
where `user_id` = ?
    and `total_money` >= ?
order by `total_money` desc LIMIT 1

然后我绑定了这样的$charge_amount,$user_id,$charge_amount)

的参数

为什么当$charge_amount为0时,它返回随机false和true。我知道$charge_amount 0没有意义但是这个过程将取决于process.System将计算金额然后将收取用户费用。如果return false,则会插入您的付款失败。我知道我可以通过检查金额是0来修复它只是返回true,但我想知道为什么它是随机的原因并且是存储金钱的最佳方式,并且减去所有返回错误的原因受影响,如果受影响则返回true,如果不是则返回false。

简要说明

当我收取0时,表示有时不受影响,有时会受到影响

0 个答案:

没有答案