За последние 24 часа нас посетили 58997 программистов и 1780 роботов. Сейчас ищут 1280 программистов ...

NULL

Тема в разделе "PHP и базы данных", создана пользователем rs_ssh, 9 фев 2015.

  1. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Например, при добавлении товара можно указать скидку. Есть скидки нет, тогда пустым переменным присваиваем NULL ($percent = NULL и $sale = NULL).

    Но Mysql выдаёт ошибку:
    Код (Text):
    1. Incorrect decimal value: '' for column 'sale' at row 1
    2. Incorrect integer value: '' for column 'percent' at row 1
    Собственно что делать с данными пустыми переменными?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    для начала показать запрос ;)
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    надо писать NULL прямо в запросе и без кавычек. Это слово такое, а не значение переменной.
     
  4. rs_ssh

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

    С нами с:
    18 янв 2014
    Сообщения:
    220
    Симпатии:
    0
    Может тогда правильней в таблице сделать значения по умолчанию для sale 0.00 и для percent 0 заместо NULL и тогда если переменная пустая, то присваивать ей нули.

    Добавлено спустя 48 секунд:
    Ок, попробуем.

    Добавлено спустя 12 минут 58 секунд:
    Сработало!
    Тогда такое условие надо ставить, можно ли как-то проще сделать???
    Код (Text):
    1. if($sale == NULL)
    2.         {
    3.             Запрос, NULL прямо в запросе и без кавычек
    4.         }
    5.         else
    6.         {
    7.             Запрос
    8.         }
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Тенарный оператор можно.
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Удобнее всего сделать свою обертку над mysqli или PDO, которая обрабатывала бы случаи NULL, а возможно еще array. Тогда не придется во множестве мест писать одни и те же if.
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нулла лучше избегать. Пустая строка или 0 - отлично подходят в большинстве задач.