当我尝试使用PHP函数补货产品时遇到一个非常奇怪的问题。
这里是功能:
function add_stock($products_id, $add_quantity) {
global $db;
$db->Execute("update " . TABLE_PRODUCTS . "
set products_quantity = products_quantity + " . (int)$add_quantity . ", products_ordered = products_ordered - " . (int)$add_quantity . " where products_id = '" . (int)$products_id . "'");
}
因此,在以上功能中,我关注的区域是products_quantity
添加到$add_quantity
时。
一切正常,但是当我测试一种数量等于或大于1000000的产品时,它的计算就很奇怪。
例如,测试产品的数量为1 000000。使用该函数将8加到1 000010。因此,不是加8,而是加了10。我再次使用6和8运行它,然后变为1。 000 020,然后1 0000030。就像以10为增量。我很困惑。
[我尝试了其他十二种产品,其数量不足一百万,并且每次都能完美地工作。
编辑:通过评论询问后-products_quantity的数据类型为FLOAT。
FLOAT的精度较低,并且可能会四舍五入。那就是问题所在。
将列的数据类型更改为DECIMAL
,NUMERIC
,INT
或BIGINT
。