13

我必须把一些物品的价格放在一个 mysql 表中。创建我使用的表格时,DECIMAL(10,2)因为逗号后不需要超过 2 位数字(例如:123,45 将被接受为输入,但 123,456 将使用 PHP 四舍五入为 123,45)。

第一个问题:使用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
4

1 回答 1

11

DECIMAL(10,2)表示这10是要使用的最大位数。2指定小数点右侧有两个。8所以这意味着左边还有数字。见手册

至于数据类型,您应该使用double十进制数。

Integer没有小数字符,因此它将对所有数字求底。String是文本而不是数值。Blob用于二进制大对象,EG:图像

于 2013-06-05T12:57:20.440 回答