За последние 24 часа нас посетили 17274 программиста и 1201 робот. Сейчас ищут 1319 программистов ...

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

Тема в разделе "PHP и базы данных", создана пользователем cat, 23 дек 2006.

  1. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    Проблема: при выполнении запроса "INSERT INTO tab1 VALUES('','$p','$v')" из php-файла вместо числа $v(ненулевого) в таблицу записывается 0( тип поля - int), но если я выполняю этот запрос в phpMyAdmin - все правильно.
    Если вместо $p подставляю число или беру $p=$p+100,$p=$p."0" и т.п., то в таблицу вносится правильное значение $v. Вариант $p=$p+100-100(чтобы компенсировать 100) опять приводит к "0" в последнем столбце.
    Рассматривалися принудительные преобразования $p к int и string - результат тот же.
    Попытка UPDATE $v после вставки строки в таблицу не заменяет 0 на нужное значение.
    Огромная просьба помочь.
     
  2. Mavir

    Mavir Guest

    Перед вставкой выводи SQL-запрос через print и смотри что не так.
     
  3. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Замечание: чтобы не было разногласий и разночтений, а также для удобочитаемости кода лучше указывать, в какие поля вставляются данные.
    PHP:
    1.  
    2. <?php
    3. $query = 'insert into tab1 (field1, field2, field3) values ("", '.(int)$p.', '.(int)$v.')';
    4. echo $query;
    5. ?>
    6.  
     
  4. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    1. Print выводит правильный запрос. То ,что выводилося на экран, я копирую и выполняю и в phpMyAdmin - ВСЕ работает.
    2. $query = 'insert into tab1 (field1, field2, field3) values ("", '.(int)$p.', '.(int)$v.')'; - не помогло
     
  5. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    покажите
     
  6. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    На экран выводится:
    INSERT INTO tab1 (f1,f2,f3) VALUES("",23,21)
    Результат:
    f2=23,f3=0.
     
  7. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    можно структуру таблицы увидеть?
     
  8. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    CREATE TABLE tab1
    (
    f1 int auto_increment NOT NULL,
    f2 int,
    f3 int,
    PRIMARY KEY (f1)
    );
     
  9. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    и даже если явно указать запрос в функции
    Код (Text):
    1. mysql_query('INSERT INTO tab1 (f1,f2,f3) VALUES ("",23,21)');
    то все равно значения неверные пишутся?
     
  10. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    Так работает.
    Но надо выполнить INSERT INTO tab1 (f1,f2,f3) VALUES ("",$p,$v).На экран выводится INSERT INTO tab1 (f1,f2,f3) VALUES("",23,21). Однако в БД f2=23,f3=0.
    Более того, если перед выполнением запроса $p=$p+1 , то в БД- f2=24,f3=21. Т.е. f2 на 1 больше нужного значения.
     
  11. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    покажите код, где генерируются значения $p и $v и составляется запрос к базе данных.
     
  12. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    Есть страница edit.php, в которой пользователь изменяет значения данных.Из этих новых данных формируются массивы $array_value и $p, которые передаются в main.php.
    Там
    $p=$array_value[$j-1];

    foreach($parent as $value)
    {
    $q='INSERT INTO plant_connector (plant_connector_id,child_id,parent_id) VALUES ("",'.$plant_id.','.$value.')';echo$q;
    mysql_query($q);
     
  13. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    Произошла ошибка. Вот правильные данные.

    Есть страница edit.php, в которой пользователь изменяет значения данных.Из этих новых данных формируются массивы $array_value и $parent, которые передаются в main.php.
    Там
    $p=$array_value[$j-1];
    foreach($parent as $value)
    {
    $q='INSERT INTO plant_connector (f1,f2,f3) VALUES ("",'.$p.','.$value.')';
    mysql_query($q);
    }
     
  14. Xpert

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

    С нами с:
    15 дек 2006
    Сообщения:
    47
    Симпатии:
    0
    А как формируется parent?
     
  15. cat

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

    С нами с:
    23 дек 2006
    Сообщения:
    8
    Симпатии:
    0
    <select name="parent[]" multiple>