php更改带有小数点的数字,从逗号到点

时间:2016-12-01 15:18:20

标签: php apache cakephp cakephp-3.0

首先我要提一下,因为我认为重要的是,我正在使用我自己的自己安装的apache-php-mysql ,而我的网站正在虚拟主机(FastCGI)上运行。

我在cakephp中有一个代码在数据库(oracle)中进行查询,并且使用逗号而不是点返回数量以分隔小数(在oracle中,数字是带点)例如17.12345返回为17,12345

我确信必须有关于apache或php的指示来改变这一点,我读过的所有答案都建议使用str_replace,但我不认为这是正确的答案。 在XAMPP中,相同的代码可以正常工作并返回数据库中保存的数字,这样就可以解释为什么我认为我缺少服务器端的一些指令来解决这个问题。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,不知道是否最好但是有效。

Cakephp 3的oracle plugin在我们进行的每个查询之前触发ALTER SESSION查询,因此我将此部分 NLS_NUMERIC_CHARACTERS ='。,'添加到使得数量为点的更改会话查询中分离。

此alter会话在connect()函数的 ROOT_CAKEPHP3 \ vendor \ cakedc \ cakephp-oracle-driver \ src \ Database \ Driver \ OracleBase.php 文件中。

这是最终的alter session查询:

$config['init'][] = "ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' 
              NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS' 
              NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS' 
              NLS_NUMERIC_CHARACTERS = '.,'";