我必须将一些项目的价格放在mysql表中。创建表时我正在使用DECIMAL(10,2)
,因为逗号后不需要超过2位数(例如:123,45将被接受作为输入,但123,456将被舍入为123,45与PHP )。
第一个问题:使用DECIMAL(10,2)
,如何知道逗号之前可以存储多少个数字?我知道它不是10,因为10只是Mysql在使用这些数字进行数学运算时所使用的精度:那么数字本身的长度是指定的吗?
第二个问题:我正在使用PHP来舍入用户输入以适应数据类型(浮点数用逗号后的2个数字)。我应该如何使用mysqli->bind_param
插入这些数据?我应该使用bind_param
接受哪些数据类型(来自documentation)(可能:为什么)?
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
答案 0 :(得分:8)
DECIMAL(10,2)
表示10
是要使用的最大位数。 2
指定小数点右侧有两个。所以这意味着左侧有8
个数字。见the manual
对于数据类型,您应该使用double
,因为这是十进制数。
Integer
没有小数字符,因此它将覆盖所有数字。 String
用于文本而非数字值。 Blob
用于二进制大对象,EG:图像