转换php和mysql之间的数字格式

时间:2010-08-13 20:21:21

标签: php mysql joomla

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

$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->引用值),我会得到一个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。

有什么想法吗?这真的让我伤心。

2 个答案:

答案 0 :(得分:2)

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

如果要剥离千位分隔符,请尝试:number_format($ this-> balanceRemaining,2,'。','')

答案 1 :(得分:1)

只是不要使用number_format()将数据插入数据库。它用于显示数据。对于纯舍入,请使用round()函数。