Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: проблема с Insert и Update
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2010
Помог: 0 раз(а)
проблема такая есть база в которую заноситса инфа...
не могу сделать так чтобы если строка уже сущесвует она обновилась если такого айди еще нет добавилась?!
юзаю такой код
$resulto=mysql_query("INSERT INTO stok (id_hard_stok,number,date) VALUES ('$one','$too','$tree') ON DUPLICATE KEY UPDATE stok SET
id_hard_stok='$one',
buy='$too',
sell='$tree'");
HotBird
Отправлено: 08 Января, 2011 - 21:56:33
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010
Помог: 2 раз(а)
guardlight пишет:
так чтоли
Просто строку 2 уберите.
----- Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев. Качественный хостинг по доступной цене
JustUserR
Отправлено: 09 Января, 2011 - 02:49:30
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
guardlight В качестве возможной программной реализации для предполагаемой задачи осуществления поиска существующей записи в таблице БД и проведения ее модификации или добавления при условии предварительного отсутсвия - допустимо использования определяемой пользовательской SQL-процедуры формата PL/SQL осуществляющей поиск вхождения требуемого элемента и выбор дальнейших действий в классическом условном операторе
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
guardlight
Отправлено: 09 Января, 2011 - 15:36:26
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2010
Помог: 0 раз(а)
HotBird пишет:
Просто строку 2 уберите.
id_hard_stok это не ключ а айди товара и указана его цена в сел и бай а по поводу PL/SQL
IF - THEN - ELSE - END IF;следует применять??
HotBird
Отправлено: 09 Января, 2011 - 19:24:46
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010
Помог: 2 раз(а)
guardlight пишет:
id_hard_stok это не ключ а айди товара и указана его цена в сел и бай
А у вас уникальное поле айди имеет автоинкремент?
Если нет то тогда оно должно быть указано здесь: INSERT INTO stok (id,id_hard_stok,number,date) с присвоением уникального значения.
----- Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев. Качественный хостинг по доступной цене
Champion
Отправлено: 09 Января, 2011 - 19:56:30
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
guardlight пишет:
по поводу PL/SQL
IF - THEN - ELSE - END IF;следует применять??
Да. Но тут это не нужно. Тут простая задача, которая решается предложением on duplicate key update.
guardlight пишет:
так чтоли...
ON DUPLICATE KEY UPDATE stok SET
id_hard_stok='$one',
Красную штуку не надо. А так похоже на правду. Но мы так и не узнали, где у таблицы ключ, а где то, что надо обновлять, поэтому я могу только догадаться.
JustUserR
Отправлено: 09 Января, 2011 - 20:33:26
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
guardlight пишет:
А по поводу PL/SQL IF - THEN - ELSE - END IF;следует применять??
Использование технологии PL/SQL позволяет осущесвить создане унифицированных приложений по работе с хранищимися информационными полями на оригинальной стороне сервера БД - более подробная информация по предполагаемой задаче предоставлена здесь http://www[dot]firststeps[dot]ru/sql/oracle/r.php?43
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Champion
Отправлено: 09 Января, 2011 - 20:36:59
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
JustUserR, написание на Ассемблере функции сложения 2 чисел тоже дает возможность заняться ерундой. Более подробная информация предоставлена тоже где-то.
Зачем городить процедуры, когда задача делается одним оператором SQL?
nextdrift
Отправлено: 09 Января, 2011 - 21:20:01
Гость
Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
Зашёл на форум по той-же проблеме..........
Решил не создавать тему. Кину сюда
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Потому что запрос update успешно выполняется. Но не затрагивает ни одной строки.
Чтоб проверить сколько строк затронул апдейт, есть mysql_affected_rows. А лучше воспользоваться той конструкцией, которую мы тут так бурно обсуждаем.
JustUserR
Отправлено: 10 Января, 2011 - 20:23:45
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Champion пишет:
Зачем городить процедуры, когда задача делается одним оператором SQL?
Возможной полезной стороной использования SQL-процедур для осуществления решения поставленной задачи является допустимость непосредственного программного ображения к хранимым информационным полям
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.