2013-11-02 3 views
0

Я пытаюсь сделать вид запроса друга для моего чата,ключ индекса уника не похож на работу

поэтому я таблица называется cyb_user_friendlist

тогда я поместил некоторые таблицы, как, что :

1 id_friendlist int(11) AUTO_INCREMENT 
2 from   int(11)  
3 to   int(11)   
4 couple   varchar(11) 
5 accept   int(11)  
6 block   int(11) 

так для каждого запроса друга вставки делается для этой таблицы с идентификатором отправителя в с и идентификатором приемника в, но чтобы убедиться, что есть только один запрос на пару я добавил поле под названием пара, в которой есть конкатенация от и до вершины ный сепаратор |. это поле имеет ключ uniq, потому что я хочу предотвратить использование нескольких записей.

единственное, что это не похоже на работу, actualy я добавил свой Uniq ключ к таким полям и первичный ключ к id_friendlist, но он не работает, я могу отправить запрос много, как хотелось ...

мой запрос $ SQL, чтобы сделать это один ниже:

$query = "INSERT INTO `cyb_users_friendlist` SET 
      `from` = {$from}, 
      `to` = {$to}, 
      `couple` = '{$from}|{$to}'"; 

Я действительно не знаю, где я ошибаюсь ...

anykind помощь будет оценена.

+0

не уверен, что вопрос здесь –

+0

беда в том, что вставка также дублировать запись даже с уникальным ключом индекса ... Я также попытался с помощью вставки игнорировать, но это не делает работа – user2506760

+0

вам не нужно «пара», вы можете добавить уникальный индекс на 2 поля. ALTER TABLE «ВАШЕ НАЗВАНИЕ ТАБЛИЦЫ» ADD UNIQUE 'unique' (' from', 'to') –

ответ

0

Почему вы добавляете другое поле, которое объединено двух других, когда вы можете просто добавить уникальный индекс?

mysql combined unique keys

ALTER TABLE `YOUR TABLE` ADD UNIQUE `unique` (`from` , `to`) 
+0

нет, потому что мне нужно иметь concat для взаимности, поэтому вы не можете отправить frienrequest, если кто-то отправил вам один, просто ответьте предыдущий. – user2506760

+0

Тогда вам нужны два индекса: http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html или я просто не понимаю проблему правильно. – sanis

+0

нет, потому что, если я добавлю два индекса, это означает, что один пользователь может отправлять только один запрос друга и не многим другим пользователям. – user2506760

0
$query = "INSERT INTO `cyb_users_friendlist` SET 
     `from` = $from, 
     `to` = $to, 
     `couple` = concat('$from','|','$to')'"; 
+0

У меня все же есть тот же результат, даже с уникальным ключом t, позволяющим несколько записей – user2506760

+0

, но когда вы эхо ваш запрос, он выглядит хорошо? –

+0

да, но он должен вставить один раз, и теперь я могу вставить сколько раз я хочу – user2506760