Muszę umieścić cenę niektórych przedmiotów w tabeli mysql. Podczas tworzenia tabeli używam DECIMAL(10,2)
, ponieważ nie potrzebuję więcej niż 2 cyfry po przecinku (na przykład: 123,45 będzie akceptowane jako dane wejściowe, ale 123 456 zostanie zaokrąglone do 123,45 z PHP).Obsługa liczb dziesiętnych w mysqli
Pierwsze pytanie: używając numeru DECIMAL(10,2)
, skąd mam wiedzieć, ile liczb można zapisać przed przecinkiem? Wiem, że to nie 10, ponieważ 10 to tylko precyzja, jakiej używa Mysql przy matematyce z tymi liczbami: więc gdzie jest określona długość samej liczby?
Drugie pytanie: Używam PHP do wprowadzenia danych użytkownika w celu dopasowania do typu danych (float z 2 liczbami po przecinku). W jaki sposób należy użyć mysqli->bind_param
do wstawienia tych danych? Którego z tych typów danych (z documentation) zaakceptować przez bind_param
powinienem użyć (i być może: dlaczego)?
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
dziękuję! Więc teraz rozumiem 10-2. – Saturnix
Nie polecam używania 'double' lub' float', jeśli potrzebujesz dokładnych skalowanych liczb. Zobacz http://dev.mysql.com/doc/refman/5.6/en/problems-with-float.html –
W tym pytaniu i odpowiedzi mysql używa 'decimal'. jest to tylko typ paramu wiązania, który jest podwójny. I to jest tylko opcja z podanych typów. –