Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как лучше проверять повторяющиеся данные
 
 автор: tima2010   (15.12.2011 в 18:58)   письмо автору
 
 

Привет! Есть таблица пользователей, нужно сделать проверку на существование email адресов, дабы избежать повторяющихся при регистрации.
Своим способом как мне кажется разумно поступать при небольшом количестве пользователей, или я ошибаюсь? Не слишком ли будет громоздкий запрос если в таблице много записей > 1000

Таблица mytable:


id | mail | field1 | field2 | field3 | field 4| .....
1   почта | ....      | ......... | .......... | ........... | ......
1   почта | ....      | ......... | .......... | ........... | ......
1   почта | ....      | ......... | .......... | ........... | ......
1   почта | ....      | ......... | .......... | ........... | ......
1   почта | ....      | ......... | .......... | ........... | ......
..............................................................................


Ищем совпадения:

<?php
// SELECT mail FROM mytable WHERE mail='$mail'
if ($row->mail == $mail) {
echo 
'Ошибка, данный емайл уже существует';
}
?>

  Ответить  
 
 автор: Valick   (15.12.2011 в 19:13)   письмо автору
 
   для: tima2010   (15.12.2011 в 18:58)
 

Не слишком ли будет громоздкий запрос если в таблице много записей > 1000
это не то что слишком много записей... это считай их совсем нет
волноваться нужно начинать от пары десятков миллионов записей

  Ответить  
 
 автор: cheops   (15.12.2011 в 19:16)   письмо автору
 
   для: tima2010   (15.12.2011 в 18:58)
 

Да, совершенно верно, можно еще вместо mail написать COUNT(*) - вернет 0, нет e-mail, больше 0 - есть. Там при редактировании тонкости возникают - нужно проверять во всем массиве, кроме редактируемой строки.

  Ответить  
 
 автор: tima2010   (15.12.2011 в 21:09)   письмо автору
 
   для: cheops   (15.12.2011 в 19:16)
 

Да лучше count(), так намного эстетически будет

if (count($query) != 0) { echo  "Введенный Вами e-mail уже зарегистрирован. "; }


Немного не понял вас в этом предложении:
Там при редактировании тонкости возникают - нужно проверять во всем массиве, кроме редактируемой строки.

  Ответить  
 
 автор: cheops   (15.12.2011 в 21:44)   письмо автору
 
   для: tima2010   (15.12.2011 в 21:09)
 

Когда вы редактируете запись, тоже важно, чтобы, если вводится новый e-mail, он не повторялся с другими... однако, в базе данных он уже имеется в этой самой строке. Поэтому её нужно исключать при проверке.

  Ответить  
 
 автор: tima2010   (16.12.2011 в 06:53)   письмо автору
 
   для: cheops   (15.12.2011 в 21:44)
 

все понял :) спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования