gpt4 book ai didi

php - 在php和mysql之间转换数字格式

转载 作者:行者123 更新时间:2023-11-29 02:07:26 25 4
gpt4 key购买 nike

我敢肯定这是一件非常简单的事情,就像一个放错地方的引号,但我完全被难住了。我正在使用更新查询将购物车数据输入到 mysql 表中,并且卡余额存在一些重大问题。 mysql 表中的列称为 BalanceCurrent,它是一个小数 (18,2)。在我的 php 代码中(这是一个自定义的 Joomla 组件,所以有一些 Joomla 对象和方法,如 JFactory 和 quote),这是我正在做的:

$rightNow = date("YmdHis");
$db =& JFactory::getDBO();

$query = "update arrc_Voucher set BalanceCurrent = " . $db->quote(number_format($this->balanceRemaining,2)) . ", UpdateDT = ".$db->quote($rightNow). " where VoucherNbr = ".$db->quote($this->voucherNbr);
error_log("update query: ".$query);
$db->setQuery($query);
if (!$db->query()) error_log("error inside updateVoucher: ".$db->stderr());

问题是这样的:$db->quote(number_format($this->balanceRemaining,2))。没有引号(用 $db->quote 围绕值创建)我得到一个 mySQL 错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '950.00, UpdateDT = '20100813150330'  where VoucherNbr = '1142100120514884'' at line 1 SQL=update arrc_Voucher set BalanceCurrent = 4,950.00, UpdateDT = '20100813150330'  where VoucherNbr = '1142100120514884'

有了引号,就没有错误了,这是结果的 SQL 语句(打印到 error_log):

update query: update arrc_Voucher set BalanceCurrent = '4,950.00', UpdateDT = '20100813150508'  where VoucherNbr = '1142100120514884'

看起来不错,但问题是,当我实际进入数据库时​​,BalanceCurrent 字段现在设置为 4.00,而不是 4950.00。

有什么想法吗?这真的要了我的命。

最佳答案

我猜千位分隔符逗号可能是个问题。该字段的数据类型是什么?

如果你想去掉千位分隔符,试试:number_format($this->balanceRemaining,2, '.', '')

关于php - 在php和mysql之间转换数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com