Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

17.01.2009, 12:03
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
проверка на наличие
Подскажите как изящнее проверять существуют ли данные в БД ... какбы при реге проверять скажем
емайл .... логин и т.п
у меня есть идея но она слишком громоздкая ...
может подскажите более изящьный способ ? =)
зарание спасибо!
|
|
|

17.01.2009, 12:18
|
|
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме: 10046345
Репутация:
4589
|
|
$sql = "SELECT * FROM users WHERE username='".addslashes($_POST['username'])."' OR email='".addslashes($_POST['email'])."'"; // и тд
$result = mysql_query($sql);
if ($result AND mysql_num_rows($result) > 0)
{
...
типа так?)
Последний раз редактировалось BlackSun; 17.01.2009 в 12:28..
|
|
|

17.01.2009, 12:23
|
|
Участник форума
Регистрация: 24.11.2008
Сообщений: 205
Провел на форуме: 1123418
Репутация:
362
|
|
Сообщение от BlackSun
$sql = "SELECT * FROM users WHERE username='".addslashes($_POST['username'])."' AND email='".addslashes($_POST['email'])."'"; // и тд
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
...
типа так?)
а чо, типа может быть много юзеров с одинаковыми логинами и паролями?
|
|
|

17.01.2009, 12:32
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
BlackSun есиб так.. =( ... нада знать что иммено уже существует ... логин пасс или там ещё чтото =\\ поэтому конструкция получяется грамоздкой =\\
|
|
|

17.01.2009, 12:43
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
мда и чё я раньше не дадумался чёт я туплю последнеевремя
$sql = "SELECT `username`,`email` FROM users WHERE username='".addslashes($_POST['username'])."' OR email='".addslashes($_POST['email'])."'";
$result = mysql_query($sql);
$fetch = mysql_fetch_assoc($result);
if($fetch != array())
{
if($fetch['username'] == $_POST['username'])
$error = "username alredy exist";
elseif($fetch['email'] == $_POST['email'])
$error = "email alredy exist";
}
ы =)
тему в мусарку плз
Последний раз редактировалось Doom123; 17.01.2009 в 12:54..
|
|
|

17.01.2009, 17:05
|
|
Постоянный
Регистрация: 16.02.2008
Сообщений: 724
Провел на форуме: 1025839
Репутация:
581
|
|
кстати.лучше юзать mysql_real_escape_string
|
|
|

18.01.2009, 01:57
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
Добавляй в конец запроса LIMIT 1
Я так полагаю, что предполагается выборка одной записи, а в твоём варианте мускуль будет перебирать все записи талицы.
|
|
|

18.01.2009, 02:05
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
А он и должен перебирать все записи, чтобы найти совпадения. Если алгоритм верный был ДО внедрения процедуры, такая запись будет только одна, если есть совпадения
|
|
|

18.01.2009, 03:20
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
Но без условия LIMIT 1 он будет перебирать записи уже после того, как найдёт нужную, а это лишняя нагрузка на БД.
|
|
|

18.01.2009, 13:27
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
Ставь поле unique, бд при занесении дубликата, возвратит ошибку, парси ее на предмет того, что поле не может быть продублировано -> выноси сообщение пользователю
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|