За последние 24 часа нас посетили 16892 программиста и 1313 роботов. Сейчас ищут 1536 программистов ...

Не могу записать в поле целое число

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

  1. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Возникла следующая проблема. При выполнении запроса
    $q="INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','$plant_id','$value')"
    в поле "parent_id" ВСЕГДА пишется 0.
    Если же выводить этот запрос на экран, то $value - целое НЕНУЛЕВОЕ число(т.е. примерно так
    $q="INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','6','5')"), а реально в БД пишется 0.
    Преобразование $value к int ничего не изменило. Причем в "child_id" все записывается правильно, а тип у "parent_id","child_id" - int.
    Большая просьба помочь!!!!
     
  2. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Простейший способ определить, косяк это вашего приложения или все-таки таинственный глюк БД:

    $q="INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','$plant_id','".($value+1)."')"

    Если будет записываться единица, значит все-таки вы где-то напутали в скрипте.
     
  3. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Пишется 0.
     
  4. Anonymous

    Anonymous Guest

    nat, таблицу покажи?
     
  5. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    CREATE TABLE plant_connector
    (
    plant_connector_id int auto_increment NOT NULL,
    child_id int,
    parent_id int,
    PRIMARY KEY (plant_connector_id)
    );
    ------------------------------------------------------------
    Результаты
    plant_connector_id child_id parent_id
    42 4 0
    3 2 0
    8 3 0
     
  6. Anonymous

    Anonymous Guest

    а если ручечками выполнить
    PHP:
    1. INSERT INTO plant_connector(child_id,parent_id) VALUES (77,99)
    что будет?
     
  7. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    INSERT INTO plant_connector(child_id,parent_id) VALUES ('$plant_id','777') - результат тот же.
    INSERT INTO plant_connector(child_id,parent_id) VALUES ('123','777')-записываются правильные значения
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    nat

    а покажи РЕАЛЬНЫЙ SQL который серверу отдается? с уже вставленными значениями?
     
  9. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Когда вывожу на экран запрос
    INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','$plant_id','$value'),
    то имеем
    INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','10','2')
     
  10. Anonymous

    Anonymous Guest

    А если кавычки убрать у числовых значений?
     
  11. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Эффект тот же-в child_id пишет нормальное значение, в parent_id - 0
     
  12. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Запрос
    INSERT INTO plant_connector(child_id,parent_id) VALUES ('700','$value')
    устанавливает child_id - 700,parent_id - нормальное значение[/u]
     
  13. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    nat

    русским же языком сказали - ПОКАЖИ ЗАПРОС ПЕРЕД ВЫПОЛНЕНИЕМ? не примеры, которые тут приводишь, а САМ ЗАПРОС в том виде, в котором он передается в mysql_query();
     
  14. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    $q="INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','$plant_id','$value')";
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    nat

    мне нужно видеть
    print $q;
     
  16. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','10','2')
     
  17. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    nat

    взял твой CREATE и прогнал там 2 раза твой запрос - все работает

    это дамп.

    Код (Text):
    1.  
    2. CREATE TABLE `plant_connector` (
    3.   `plant_connector_id` int(11) NOT NULL auto_increment,
    4.   `child_id` int(11) default NULL,
    5.   `parent_id` int(11) default NULL,
    6.   PRIMARY KEY  (`plant_connector_id`)
    7. ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
    8.  
    9. --
    10. -- Дамп данных таблицы `plant_connector`
    11. --
    12.  
    13. INSERT INTO `plant_connector` (`plant_connector_id`, `child_id`, `parent_id`) VALUES
    14. (1, 10, 2),
    15. (2, 10, 2);
    а ты УВЕРЕН что не работает?
     
  18. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    В том то и фикус, что этот запрос в БД работает нормально, а из РНР выполняется ЧАСТИЧНО правильно,т.е. в одно числовое поля записывает 0 вместо числа.
     
  19. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ты показал именно print $q ? или что? т.е. именно то уходит? или опять от балды написал?
     
  20. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Перед выполнением запроса стоит print $q,а
    INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ('','10','2') - это результат.
     
  21. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    nat
    Честно - я с таким раньше никогда не сталкивался.
    Зайди в phpMyAdmin и выполни там этот запрос "руками". Что произойдет?

    Такое ощущение, что запрос у тебя отрабатывает правильно и добавляется значение как надо... а потом затирается другим запросом. Попробуй поставить die() сразу после этого злосчастного mysql_query().
     
  22. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Ситуация такая.
    При создании plant запрос $q работает корректно.
    Когда я выполняю ЭТОТ ЖЕ запрос, но при редактировании plant(тот же код выполняется ниже), то получается такой эффект.
    У меня это было уже в двух различных БД.
    Относительно phpMyAdmin - там все нормально, а вот из РНР правильно записываться не хочет
     
  23. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    ЗНачит чисто логическая ошибка в скрипте. После этого запроса у тебя выполняеться ещё какой-то запрос, который затирает то что ты вставил.
     
  24. nat

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

    С нами с:
    12 фев 2007
    Сообщения:
    13
    Симпатии:
    0
    Действительно, ниже была строка, которая переписывала значения. Код большой-вот и не бросалася в глаза.
    ОГРОМНОЕ ВСЕМ СПАСИБО!!!!!!!!
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    не надо слов, лучше деньгами...
    =)