У меня есть следующая таблицаКак вставить переменную с плавающей точкой в базе данных правильно
CREATE TABLE IF NOT EXISTS `payment_data` (
`orderid` int(11) NOT NULL,
`orderDesc` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`orderAmount` float NOT NULL,
UNIQUE KEY `orderid` (`orderid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
и я пытаюсь вставить строку в его с помощью PHP.
$sql = 'INSERT INTO payment_data '.
'(orderid, orderDesc, name, email, orderAmount) '.
'VALUES ('.$form_order_id.', "'.$form_order_desc.'", "'.$form_name.'", "'.$form_email.'", '.number_format($form_order_amount, 2, '.', ',').')';
Проблема заключается в том, что «orderAmount» вставлен без десятичной части. Например, если $ form_order_amount = 30,45, то 30 - это то, что вставлено в базу данных.
Я использовал number_format(), потому что он должен преобразовать «30,45» в «30,45».
Вы должны десятичную точность для поплавка 'orderAmount' поплавок (7,2)' или что-то желательны –
'30,45' с' 'десятичного не является допустимым числом к компьютеру; вам понадобится десятичная точка ('.') при вставке в MySQL –
Тем не менее, не используйте' float' для денег в базе данных, используйте [decimal] (http://dev.mysql.com/doc/refman/5.6/ ru/precision-math-decimal-characteristics.html) .... или даже лучше, настройте значение на центы, чтобы вы работали с целыми числами, если вам когда-либо понадобится корректировка для налоговых расчетов и т. д., где точность с плавающей запятой может вызвать проблемы –