我確定這是一件非常簡單的事情,就像錯誤的報價一樣,但我完全被難住了。我正在使用更新查詢將購物車數據輸入到MySQL表中,並且在卡平衡方面存在一些主要問題。 mysql表中的列叫做BalanceCurrent,它是一個小數(18,2)。在我的PHP代碼(這是一個自定義的Joomla組件,所以有一些的Joomla對象和方法,如JFactory和報價),這裏是我在做什麼:在php和mysql之間轉換數字格式
$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->報價(number_format($這 - > 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。
任何想法?這真的讓我失望。
正如我所說,字段(數據庫中的列)是十進制(18,2)。在php中使用number_format時,千位分隔符是默認值。我不確定是否有辦法擺脫它。它是number_format函數中的可選參數,但如果輸入全部四個參數,則需要指定分隔符。我不確定你可以通過給出一個空字符串作爲參數來擺脫分隔符。不過,我會盡力的。 – EmmyS 2010-08-13 20:33:48
我很抱歉沒有看到你的帖子: 嘗試number_format($ this-> balanceRemaining,2,'。',''); – Guillermo 2010-08-13 20:36:43
你需要傳遞第三個和第四個參數(第三個是十進制字符,第四個是數千):'number_format($ number,2,'。','');' – ircmaxell 2010-08-13 20:37:13