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 ........... ON DUPLICATE
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
По форуму поищите тема была, я сам отвечал подробно.
$last_id можно найти через mysql-insert-id
Терри
Отправлено: 30 Мая, 2012 - 09:42:08
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Я разве что-то не так делаю, почему он мне как-то странно сажает данные?
В тексте запроса всё вроде бы нормально видно. И уникальные ключи даны.
В таблице rimstype_name для значений id_lang, которые равны 2 и 3, он просто для них обновляет значения rimstype. А на id_rimstype совершенно не обращает внимания. И практически у меня только 2 записи обновляются в этой таблице и никакие новые записи не добавляются.
$tquery="INSERT INTO `rimstype_name` (`id_rimstype`, `id_lang`, `rimstype`) VALUES ($n,2, '".$rimtp2."'), ($n,3, '".$rimtp3."') ON DUPLICATE KEY UPDATE `rimstype`=VALUES(`rimstype`)";
?>
Прикреплено изображение (Нажмите для увеличения)
tuareg
Отправлено: 30 Мая, 2012 - 10:13:38
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Я не очень понял что Вы хотите сделать.
Терри пишет:
В таблице rimstype_name для значений id_lang, которые равны 2 и 3, он просто для них обновляет значения rimstype. А на id_rimstype совершенно не обращает внимания.
Он так и должен работать. У Вас стоят 2 индекса(ключа) оба уникальные. При совпадении любого из этих ключей (`id_rimstype` или `id_lang`) происходит
Попробуйте, если получится то Ваш индекс по `id_lang` нужно будет удалить.
Терри
Отправлено: 30 Мая, 2012 - 10:59:31
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Наконец-то получилось ...
Удалила уникальные индексы и поставила ваш индекс.
Это означает, что то, как я ставила уникальность, было неправильно и он рассматривал их по отдельности.
А этот составной индекс я должна именно командой ставить? Без галочек на соответствующую кнопку Unique? (Добавление)
tuareg,
Большое спасибо, что помогли мне наконец-то разобраться в этом вопросе ...
tuareg
Отправлено: 30 Мая, 2012 - 11:07:21
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Терри пишет:
Наконец-то получилось ...
Я рад.
Терри пишет:
Удалила уникальные индексы и поставила ваш индекс.
Тут смотрите. Если в Ваших запросах других используется правая часть индекса. То этот индекс использоваться не будет.
Терри пишет:
Это означает, что то, как я ставила уникальность, было неправильно и он рассматривал их по отдельности.
Абсолютно верно. Т.е запрос получался такой же как я и писал в втором ответе.
Терри пишет:
А этот составной индекс я должна именно командой ставить? Без галочек на соответствующую кнопку Unique?
Нет просто я написал запрос, так как таблица уже существует. Конечно проще ставить индексы при создании таблицы. Может и phpMyAdmin можно это сделать. Просто я с ним не работаю, поэтому не знаю (Знаю только как выполнить запрос SQL )
Терри
Отправлено: 30 Мая, 2012 - 11:11:06
Гость
Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Я учту, при создании таких таблиц, именно такая запись будет использоваться для открытия уникальности.
Ничего, это не проблема исправить в других местах, главное, знаю причину и знаю, как оно должно работать.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.