代码之家  ›  专栏  ›  技术社区  ›  EmmyS

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

  •  2
  • EmmyS  · 技术社区  · 15 年前

    我确信这是一个非常简单的问题,就像一个放错地方的引用,但我完全被难住了。我正在使用更新查询将购物车数据输入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->报价(数字)格式($this->平衡器(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语句(打印到错误日志):

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

    有什么想法吗?这真是让我难受。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Guillermo    15 年前

    如果要去除千位分隔符,请尝试:number\u格式($this->balanceRemaining,2,''''''''','''''')

        2
  •  1
  •   Mchl    15 年前

    只是不要使用 number_format() 用于将数据插入数据库。它是用来显示数据的。纯圆形使用 round()

    推荐文章