Есть форма при заполнении и нажатии кнопки должна идти запись в БД а если она есть уже, то обновление, написал код: Код (Text): $insert_sql = "INSERT INTO main (nazv,text, user_id)". "VALUES ('{$nazv}','{$text}', '{$_SESSION['id']}')". "ON DUPLICATE KEY UPDATE nazv = VALUES('{$nazv}'), text= VALUES ('{$text}'), user_id= VALUES ('{$_SESSION['id']}'); "; mysql_query($insert_sql); {echo 'ок';} } он работает, только идет запись, а обновления нет, в чем ошибка?
могу предположить, что поле, по которому идет сверка должен иметь атрибут в таблице либо UNIQUE, либо PRIMARY KEY, например название. и этих полей может быть несколько, для одной таблицы
@kiril901, над синтаксисом не заморачивайтесь... Более менее норм - я перепутал. Выше Вам дали рекомендацию.
@kiril901, дело не в id. Вы же не вносите вручную id в запросе. Одно из полей nazv, text, user_id должно иметь атрибут "уникальное".
@kiril901, по Вашему запросу непонятно, какой из этих атрибутов не должен дублироваться, потому как Вы их обновляете все. Какой-то атрибут (или составной ключ) должен остаться без изменения. Либо действительно надо добавить id.
В таблице наверно.... поле id у Вас автоинкремент, правильно, автоматически ему присваивается атрибут приватного ключа. записи в таблицу идут по полям user_id, nazv и text. Откройте таблицу в phpMyAdmin или что там у Вас, выберите свою таблицу, нажмите на вкладку структура и добавьте полю nazv атрибут "уникальный" PHP: ALTER TABLE `main` ADD UNIQUE ( `nazv` ) Примерно вот такой запрос должен получиться
По какому признаку Вы хотите определить, что запись уже есть, если все значения, что Вы пытаетесь внести потом обновляете:
Чтобы кто-то смог помочь - надо определиться, что Вы считаете дублирующей записью? Например у Вас может для каждого пользователя быть только одна запись с определенным названием - тогда нужен составной уникальный ключ по (nazv и user_id) в таблице и в обновлении менять только атрибут text.
пишет что все ок, но запись в таблицу уже не идет после выставлению ключем уникальным --- Добавлено --- пишет что все ок, но запись в таблицу уже не идет после выставлению ключем уникальным
Если запись не идет - значит на то есть причина. Эту причину можно увидеть в логах сервера. Какой веб-сервер используете?