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 :: Помогите составить запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Редактирование записи, а при ее отсутствии ее добавление.
GiD-Man
Отправлено: 23 Августа, 2011 - 12:32:23
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Здравствуйте.
Имеется у меня таблицы users_data. В ней поля id, user_id, key, value.
Необходимо редактировать поле value в записи с нужными значениями user_id и key, а при отсутствии такой записи добавить.

PS: MySQL.
 
 Top
iflight
Отправлено: 23 Августа, 2011 - 13:13:42
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




Селект записи с нужным id и ключем, если такой записи нет то инсерт, если есть, то апдейт. Зпросы примерно такие:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `users_data` WHERE `id` = 10 AND `key` = 10;

Если есть результат:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `users_data` SET `value`='value' WHERE `id` = 10 AND `key` = 10;

Иначе:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `users_data`(`key`,`value`) VALUES(10,'value');


Вопрос - откуда возьмется id пользователя, если его еще нет в таблице?

зы.:Не помню точно функции для работы с майскюл, а методами PDO думаю не стоит грузить, потому без кода)

(Отредактировано автором: 23 Августа, 2011 - 13:17:50)

 
 Top
Мелкий Супермодератор
Отправлено: 23 Августа, 2011 - 13:59:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Есть primary key или unique не auto_increment? Тогда http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]n-duplicate[dot]html


-----
PostgreSQL DBA
 
 Top
GiD-Man
Отправлено: 23 Августа, 2011 - 16:29:43
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Мелкий, unique или Primary key не auto_increment нет. Про "INSERT ... ON DUPLICATE" читал, но немного не подходит. Дело в том что у меня может быть несколько записей с одним user_id и может быть один key для пользователей с разными user_id.

Похоже что придется делать логику на PHP.
 
 Top
iflight
Отправлено: 23 Августа, 2011 - 16:42:18
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




А если составной ключ сделать?
 
 Top
Champion Супермодератор
Отправлено: 23 Августа, 2011 - 16:44:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




составной уникальный ключ по (user_id,key) и insert on duplicate key update и всё
 
 Top
GiD-Man
Отправлено: 23 Августа, 2011 - 17:14:35
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




То что нужно!
Спасибо большое!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB