2016-12-01 4 views
0

Я знаю, что эта тема была задана раньше, но не ответы, которые я читал, мне нравятся.номера смены чисел с запятыми от запятой до точки [Решено]

Прежде всего я хотел бы упомянуть, потому что я думаю, что это важно, что я использую мой собственную установку Apache-PHP-Mysql и мой сайт работает на VirtualHost (FastCGI).

У меня есть код в cakephp, чтобы сделать запрос в базе данных (oracle), и количества возвращаются с запятой вместо точки для разделения десятичных знаков (в оракуле числа с точкой), например 17.12345 возвращается как 17, +12345.

Я убежден, что на apache или php требуется инструкция по использованию, все ответы, которые я читал, рекомендуют использовать str_replace, но я не думаю, что это правильный ответ. В XAMPP тот же код работает отлично и возвращает числа, сохраненные в базе данных с точкой, поэтому я думаю, что мне не хватает какой-либо инструкции на стороне сервера, чтобы исправить это.

Любая идея ??

+0

Может быть, [ 'Setlocale()'] (http://php.net/manual/en/function.setlocale.php) помогает? – simon

+0

Я пробовал это и не работал, я забыл упомянуть об этом. Я установил setlocale (LC_ALL, 'es_SV.utf8'); в контроллере и в представлении, и не имеет значения. Я даже прочитал об использовании 'SetEnv LC_ALL es_SV.UTF-8' в .htaccess, но ничего – hug0

+0

'в базе данных (oracle), а количества возвращаются с запятой - это указывает на то, что проблема в конфигурации db , или драйвер/код, используемые для связи с ним. Начало, например. [Здесь] (https://docs.oracle.com/cd/E36784_01/html/E36823/glmec.html) – AD7six

ответ

0

Я нашел способ, не знаю, если лучше, но работает.

oracle plugin для CakePHP 3 вызывает SESSION запрос ALTER перед каждым запросом мы делаем, поэтому я добавил эту часть NLS_NUMERIC_CHARACTERS = «,» на этой сессии изменить запрос, который делает величины дот разделены.

Это альтер сеанс в ROOT_CAKEPHP3 \ поставщика \ cakedc \ CakePHP-оракул-драйвер \ SRC \ Database \ Driver \ OracleBase.php файла в функции Connect().

И это альтер сессия запрос окончательным:

$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 = '.,'";