Php 如何更新MySQL column=列号

Php 如何更新MySQL column=列号,php,sql,Php,Sql,我有以下几个专栏: points_on | points_off 0 1.36 此SQL命令: UPDATE table SET points_off = points_off-{$cash}, points_on = points_on+{$cash} WHERE ... $cash=“1.36” 如果我运行此操作,则表更新错误,如下所示: points_on | points_off 1.36 0.0000000143051 如何正确更新 我

我有以下几个专栏:

points_on | points_off
    0          1.36
此SQL命令:

UPDATE table SET points_off = points_off-{$cash}, points_on = points_on+{$cash} WHERE ...
$cash=“1.36”

如果我运行此操作,则表更新错误,如下所示:

points_on | points_off
   1.36      0.0000000143051 
如何正确更新


我需要将“$cash数字从“积分关闭”移动到“积分打开”

我相信这源于PHP如何在内部表示数字。据我所知,PHP将数字存储为浮点小数,这可能会生成像您这样的奇怪输出

declare @cash float

set @cash=1.36
update  [dbo].[stkkk] set [pts_on]=[pts_on]+@cash

update  [dbo].[stkkk] set [pts_off]=[pts_off]-@cash
我建议阅读以下StackOverflow文章:


不确定它是否能100%工作,但您可能希望尝试实现一些代码,以确保计算精确到小数点后两位,而不是让PHP来决定。参考文章可能会有所帮助。

我相信这源于PHP如何在内部表示数字。据我所知,PHP将数字存储为浮点小数,这可能会生成像您这样的奇怪输出

我建议阅读以下StackOverflow文章:


不确定它是否能100%工作,但您可能希望尝试实现一些代码,以确保计算精确到小数点后两位,而不是让PHP来决定。参考文章可能会有所帮助。

我相信这源于PHP如何在内部表示数字。据我所知,PHP将数字存储为浮点小数,这可能会生成像您这样的奇怪输出

我建议阅读以下StackOverflow文章:


不确定它是否能100%工作,但您可能希望尝试实现一些代码,以确保计算精确到小数点后两位,而不是让PHP来决定。参考文章可能会有所帮助。

我相信这源于PHP如何在内部表示数字。据我所知,PHP将数字存储为浮点小数,这可能会生成像您这样的奇怪输出

我建议阅读以下StackOverflow文章:


不确定它是否能100%工作,但您可能希望尝试实现一些代码,以确保计算精确到小数点后两位,而不是让PHP来决定。参考文章可能会有所帮助。

是MySQL字段类型
float
还是
double

根据,问题在于
float
值是近似存储的

您应该使用
decimal
,定义为
decimal(M,D)
,其中
M
是数字中的最大位数(例如,对于0.00到9.99,
M=3
),而
D
是点后的位数(例如,对于0.00到9.99,
D=2

我执行了与您尝试过的相同的操作,遇到了相同的问题,并用
十进制
修复了它


请注意,
decimal
字段需要比
float

多得多的存储空间,MySQL字段类型是
float
还是
double

根据,问题在于
float
值是近似存储的

您应该使用
decimal
,定义为
decimal(M,D)
,其中
M
是数字中的最大位数(例如,对于0.00到9.99,
M=3
),而
D
是点后的位数(例如,对于0.00到9.99,
D=2

我执行了与您尝试过的相同的操作,遇到了相同的问题,并用
十进制
修复了它


请注意,
decimal
字段需要比
float

多得多的存储空间,MySQL字段类型是
float
还是
double

根据,问题在于
float
值是近似存储的

您应该使用
decimal
,定义为
decimal(M,D)
,其中
M
是数字中的最大位数(例如,对于0.00到9.99,
M=3
),而
D
是点后的位数(例如,对于0.00到9.99,
D=2

我执行了与您尝试过的相同的操作,遇到了相同的问题,并用
十进制
修复了它


请注意,
decimal
字段需要比
float

多得多的存储空间,MySQL字段类型是
float
还是
double

根据,问题在于
float
值是近似存储的

您应该使用
decimal
,定义为
decimal(M,D)
,其中
M
是数字中的最大位数(例如,对于0.00到9.99,
M=3
),而
D
是点后的位数(例如,对于0.00到9.99,
D=2

我执行了与您尝试过的相同的操作,遇到了相同的问题,并用
十进制
修复了它


请注意,
decimal
字段需要比
float

多得多的存储空间,为什么在更新
points\u off
列时,
points\u on
列值会发生变化。这很奇怪O.osorry,我更新了SQL命令。。第二,为什么在更新
points\u off
列时,
points\u on
列的值会发生变化。这很奇怪O.osorry,我更新了SQL命令。。第二,为什么在更新
points\u off
列时,
points\u on
列的值会发生变化。这很奇怪O.osorry,我更新了SQL命令。。第二,为什么在更新
points\u off
列时,
points\u on
列的值会发生变化。这很奇怪O.osorry,我更新了SQL命令。。第二,我是业余爱好者,这是SQL命令吗<代码>mysql\u查询(“声明…”)?嗯..不,这是来自sql server!!我是业余爱好者,这是SQL命令吗<代码>mysql\u查询(“声明…”)?嗯..不,这是来自sql server!