我必须将一些项目的价格放入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
接受的这些数据类型(来自文档)中的哪一种(可能的:为什么)?
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
DECIMAL(10,2)
表示10
是要使用的最大位数。2
指定小数点右边有两个。这意味着左边还有8
数字。参见手册
对于数据类型,您应该使用double
,因为这是十进制数。
Integer
没有十进制字符,所以它将所有的数字取底。String
用于文本而不是数字值。Blob
用于二进制大对象,例如:图像