Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   проверка на наличие (https://forum.antichat.xyz/showthread.php?t=101661)

Doom123 17.01.2009 12:03

проверка на наличие
 
Подскажите как изящнее проверять существуют ли данные в БД ... какбы при реге проверять скажем
емайл .... логин и т.п

у меня есть идея но она слишком громоздкая ...
может подскажите более изящьный способ ? =)

зарание спасибо!

BlackSun 17.01.2009 12:18

$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)
{
...

типа так?)

[dei] 17.01.2009 12:23

Цитата:

Сообщение от 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)
{
...

типа так?)

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

Doom123 17.01.2009 12:32

BlackSun есиб так.. =( ... нада знать что иммено уже существует ... логин пасс или там ещё чтото =\\ поэтому конструкция получяется грамоздкой =\\

Doom123 17.01.2009 12:43

мда и чё я раньше не дадумался чёт я туплю последнеевремя :D

$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";
}

ы =)


тему в мусарку плз

etc 17.01.2009 17:05

кстати.лучше юзать mysql_real_escape_string

SMiX 18.01.2009 01:57

Добавляй в конец запроса LIMIT 1
Я так полагаю, что предполагается выборка одной записи, а в твоём варианте мускуль будет перебирать все записи талицы.

Pashkela 18.01.2009 02:05

А он и должен перебирать все записи, чтобы найти совпадения. Если алгоритм верный был ДО внедрения процедуры, такая запись будет только одна, если есть совпадения

SMiX 18.01.2009 03:20

Но без условия LIMIT 1 он будет перебирать записи уже после того, как найдёт нужную, а это лишняя нагрузка на БД.

Chaak 18.01.2009 13:27

Ставь поле unique, бд при занесении дубликата, возвратит ошибку, парси ее на предмет того, что поле не может быть продублировано -> выноси сообщение пользователю


Время: 03:59