За последние 24 часа нас посетили 49203 программиста и 1806 роботов. Сейчас ищут 820 программистов ...

трабла с разделителем

Тема в разделе "PHP для новичков", создана пользователем roversochi, 12 мар 2013.

  1. roversochi

    roversochi Активный пользователь

    С нами с:
    4 мар 2013
    Сообщения:
    48
    Симпатии:
    0
    Есть переменная $u[wood], в ней десятичное число например 5454655,8333333332333
    Есть PHP запрос примерно такой:
    Код (Text):
    1. UPDATE users SET user_wood=$u[wood]
    Проблема в том, что php при получении десятичного числа ставить разделителем запятую и в итоге SQL ругается. Если вручную прописать
    Код (Text):
    1.  UPDATE users SET user_wood=5454655.8333332333
    то работает. Если же точку заменить на запятую, как формирует эту строку php, то последствия печальны.
    Неужто вручную разбивать число и собирать его заново типа
    Код (Text):
    1. echo $целая_часть, ".", $дробная часть
    Это жесть какая-то :)
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не заморачивайтесь:
    Код (Text):
    1. $u['wood'] = (double) str_replace(',','.',$u['wood']);
     
  3. roversochi

    roversochi Активный пользователь

    С нами с:
    4 мар 2013
    Сообщения:
    48
    Симпатии:
    0
    ага, то есть у меня с руками все в порядке? :)

    Прокатило
    Код (Text):
    1. $u['wood'] = str_replace(',','.',$u['wood']);
    без (double)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    есть и другие способы:
    - установить явно не русскую локаль (это труЪ решение)
    - преобразовывать число с плавающей запятой в строку через number_format($number, 2, '.', '') или sprintf('%F', $number)
    - при работе с базой использовать плейсхолдеры и правильно указывать тип переменной при биндинге
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    artoodetoo, +1
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну конечно, в php динамическая типизация, по этому прокатило (откуда вы знаете, что там может прийти?), он сделал строгую то есть другой тип не придет никак.

    Тем-более у вас не double будет, а string=)