Обработка десятичных чисел в mysqli
Мне нужно поставить цену некоторых элементов внутри таблицы mysql. При создании таблицы я использую DECIMAL(10,2)
, так как мне не нужно больше двух цифр после запятой (например: 123,45 будет приниматься в качестве входных данных, но 123 456 будет округлено до 123,45 с помощью PHP).
Первый вопрос: используя DECIMAL(10,2)
, как узнать, сколько чисел может быть сохранено перед запятой? Я знаю, что это не 10, поскольку 10 - это просто точность, которую использует Mysql при выполнении математики с этими числами: так, где указана длина самого числа?
Второй вопрос: я использую PHP для округления пользовательского ввода, чтобы он соответствовал типу данных (поплавок с двумя номерами после запятой). Как использовать mysqli->bind_param
для вставки этих данных? Какой из этих типов данных (из документации) принят bind_param
, следует ли использовать (и возможно: почему)?
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
Ответы
Ответ 1
DECIMAL(10,2)
означает, что 10
- максимальное количество цифр, которые будут использоваться. 2
указывает, что в правой части десятичного числа есть два. Значит, это означает, что на левой стороне слева находятся цифры 8
. См. руководство
Что касается типа данных, вы должны использовать double
, поскольку это для десятичных чисел.
Integer
не имеет десятичных символов, поэтому он будет заполнять все числа. String
- это текстовые, а не числовые значения. Blob
для двоичного большого объекта, EG: изображение