LINUX.ORG.RU

[PHP][MySQL] Разделитель целой и дробной частей

 ,


0

0

Делаю один проект на PHP+MySQL. Задача такая, чтоб работал как под Linux, так и под Windows. Вот только закавыка какая. В таблице MySQL тип колонки - DECIMAL(5,1), запрос же который заполняет содержимое поля должен иметь точку, а PHP под Windows ставит в типе переменной float либо точку, либо запятую - в зависимости от региональных настроек.

То есть под дефолтной русскоязычной вендой запрос
UPDATE table SET row="$float"
где $float = 1234,5
не сработает. Нужна именно точка, а не запятая. Как сделать чтоб работало? Хотя бы на уровне конфига PHP или MySQL задать разделитель, не лазя в региональные настройки венды? Или есть другие способы?

anonymous

В похапэ нет понятия приведения типов - это раз.
Винда не нужна - это два.
А если писать в мускул с запятой он сам не подменяет, что-ли? Должен вроде бы.

VirRaa ★★★
()

Первое, что приходит в голову - для поля формы, в которое вводится в запрос, при проверке данных тупо сделать

$float=str_replace(",",".",$float);

r_asian ★☆☆
()
Ответ на: комментарий от VirRaa

>В похапэ нет понятия приведения типов - это раз.

Угу, здрасьте. Боксинга - нет, да. А на базовом уровне - intval/floatval/strval/settype и т.д.

...

По сабжу - попробуй в mysql скармливать не число, а строку. Хотя в примере у тебя так и есть. Фишка в том, что я на эти грабли не наступаю, а вот как - х.з. Я напрямую с mysql-запросами нынче вообще не работаю, всё или через ORM или, в крайнем случае (и то крайне редко), через драйвер в духе: foreach($this->db()->select('field', 'table', array('cond1=' => value, 'cond2>', value...)) as $x) ...

KRoN73 ★★★★★
()
Ответ на: комментарий от VirRaa

> Винда не нужна - это два.

Пожалуй, так и поступлю. :) Всё равно проект делаю для себя, просто хотелось узнать как такие вещи делаются.

Всем спасибо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.