> Задача состоит в следующем - недопустить одинаковых логинов в базе MySQL.
Объявите поле `login` уникальным индексом, и задача решится сама собой. Запускаете запрос: INSERT IGNORE INTO `company` SET `login` = 'name' Потом вызываете mysql_affected_rows(). Если возвращает 1, все в порядке, новый логин добавлен. Если возвращает 0, то такой логин уже существует. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
просто и оригинально... давай побольше таких полезных мелочушек... |
Мда попроще чем:
$res=mysql_query("select * from BAZA login='$name'"); $num=mysql_num_rows($res); if ($num==false) { echo "Такого имени нет"; } else { echo "Такой name уже существует"; } |
не просто проще. а надёжней. есть момент, что после селекта и перед инсертом будет еще один инсерт, который нарушит уникальность. легко. софт сглючит или посещаемость в данный момент будет больше. вот. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Кстати воспользовался этим в программировании новой гамы.
Нужно было создать таблицу онлайн пользователей с идентификатором md5($pass.time().$REMOTE_ADDR); получаеться сессия.. вожможность совпадения конечно же очень мала, но во избежании повтора перекрестился левой пяткой и обьявил как Уникум ИД! |
andy ice писал(а): > Задача состоит в следующем - недопустить одинаковых логинов в базе MySQL.
Объявите поле `login` уникальным индексом, и задача решится сама собой. Запускаете запрос: INSERT IGNORE INTO `company` SET `login` = 'name' Потом вызываете mysql_affected_rows(). Если возвращает 1, все в порядке, новый логин добавлен. Если возвращает 0, то такой логин уже существует. Гм, я сколько учебников читал, везде так добавление записии и осуществляется, вы все по мануэлу учили пхп? |
а мы учебников не читаем. ибо обычно все учебники переводы мануала.
а те учебники, которые всё таки читали - в тех нет таких конструкций sql, ибо всё таки не стандарт, хотя хз _________________ Ин дер гросен фамилие нихт клювен клац-клац |
вопросик по теме...
возможно ли уникальное поле обьединить с другим полем? напрмер в таблице может быть множество одинаковых `login` уникальных по группам ------------------- login | group | ------------------- name1| 1 | ------------------- name2| 1 | ------------------- name3| 1 | -------------------- name1| 2 | ------------------- name2| 2 | ------------------- name1| 3 | ------------------- name3| 3 | ------------------- |
лучше бы написал что есть и что надо.
select concat(login, ' ', group) login_group from ... приходит в голову, может что-то другое надо, не очень ясно _________________ Ин дер гросен фамилие нихт клювен клац-клац |
нужно чтобы при инсерте имена не дублировались..
к примеру так: ------------------- login | group | ------------------- name1| 1 | ------------------- name2| 1 | ------------------- name2| 1 | ------------------- name3| 1 | 2 и 3тья запись продублировалась(name2), ни есть гуд( Добавлено спустя 4 минуты 23 секунды: поправил пример |
добавь уникальный составной индекс по двум полям и смотри самый первый пост _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): добавь уникальный составной индекс по двум полям и смотри самый первый пост спасибо, помогло! добавил к таблице индекс UNIQUE `index1` (`group`, `login`) и никакого дублирования |
Еще вопрос,
------------------- login | group | ------------------- name1| 1 | ------------------- name2| 2 | ------------------- name2| 1 | ------------------- name2| 1| нужно чтобы name1,name2,name3.. и.т.д неповторялись при group = '1' с другим значение group, повторы могут быть Интересно можно такой индекс заманьячить? |
аналогично предыдущему не катит чтоли? _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): аналогично предыдущему не катит чтоли?нет, при group = '2' group = '3' имена тоже уникальные становятся их уникальность нужна только при group = '1' Добавлено спустя 1 час 57 минут 44 секунды: any help please |
а. не понял значит. наверно что-то в логике или постановке не так, не понятные условия. влёт не могу предложить решение _________________ Ин дер гросен фамилие нихт клювен клац-клац |
м.б. триггерами...
эт. реально? грузить базу не сильно будет? |
дык а что такое триггер, то же самое фактически что и предварительное выяснение наличия дубля, только прозрачное и на стороне сервера. т.е. по идее быстрее будет, чем предварительная проверка _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Brain
Вынеси group=1 в отдельную таблицу. |
Хм.. а в чем дело?
уникальность первичных ключей??? CREATE TABLE name ... ... PRIMARY KEY (name1, name2)); З.Ы. Прочитал, подробнее, что задача несколько иная.... Но в любом случае вы сможете построить эффективный индекс, тем более зная условия своей задачи Это будут частные случаи.. |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |