У меня очень странная проблема, когда я пытаюсь пополнить запасы с помощью функции 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
.
Все работает нормально, но когда я тестирую продукт, который имеет 1 000 000 или больше в количестве, это делает странно расчеты.
Например, тестируемый продукт имел количество 1 000 000. При добавлении 8 с помощью функции получилось 1 000 010. Поэтому вместо добавления 8 добавилось 10. Я снова запустил его, используя 6 и 8 и он достигает 1 000 020, а затем 1 000 0030. Как приращение 10. Я в замешательстве.
Я пробовал это с дюжиной других продуктов, количество которых было меньше миллиона, и это работало безупречно каждый раз.
РЕДАКТИРОВАТЬ: После того, как спросили через комментарии - DataType для products_quantity является FLOAT.