用于cakephp app的mysql中的十进制分隔符

时间:2012-05-15 20:26:27

标签: php mysql cakephp

我有一个带有MySQL数据库的CakePHP 1.3网站。问题是我有一些价格,双倍值,使用点作为小数分隔符存储,但我的应用程序前端应使用逗号显示它们。

有没有办法直接在DB中设置它,或者只是比str_replace EVERYWHERE更好的方法来实现这一点?那会很麻烦,对我来说这似乎是不好的做法。

提前谢谢!

5 个答案:

答案 0 :(得分:1)

数据库中的小数是正确的 - 它是一个十进制用作小数。要显示,您应该使用number_format进行演示。

答案 1 :(得分:0)

技术上你可以在模型的afterFind处理程序中执行n str_replace并忘记它。

答案 2 :(得分:0)

$decimalNumberFromDb= 1234.56;
//
// French notation
//
$frenchNotation = number_format($decimalNumberFromDb, 2, ',', ' '); // Output: 1 234,56
//
// English Notation
//
$englishNotation = number_format($decimalNumberFromDb, 2, '.', ''); // Output: 1234.56

答案 3 :(得分:0)

数据库中的点不是分隔符,而是存储小数的方式。

你可以像这样做一个选择查询

select *, REPLACE(CAST(price AS CHAR), '.', ',') as price_formatted from products;

或者使用带有number_format

的其他格式的PHP显示它
$price = 1300222.99;
echo "Original:     ".$price.PHP_EOL;
echo "english/us:   ".number_format($price,2).PHP_EOL;
echo "Dutch/german: ".number_format($price, 2, ',', '.').PHP_EOL;
echo "French:       ".number_format($price, 2, ',', ' ').PHP_EOL;
echo "Swiss:        ".number_format($price, 2, ',', '\'').PHP_EOL;

示例http://codepad.org/WXjc7d2D

答案 4 :(得分:0)