Подскажите как изящнее проверять существуют ли данные в БД ... какбы при реге проверять скажем емайл .... логин и т.п у меня есть идея но она слишком громоздкая ... может подскажите более изящьный способ ? =) зарание спасибо!
$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 есиб так.. =( ... нада знать что иммено уже существует ... логин пасс или там ещё чтото =\\ поэтому конструкция получяется грамоздкой =\\
мда и чё я раньше не дадумался чёт я туплю последнеевремя $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"; } ы =) тему в мусарку плз
Добавляй в конец запроса LIMIT 1 Я так полагаю, что предполагается выборка одной записи, а в твоём варианте мускуль будет перебирать все записи талицы.
А он и должен перебирать все записи, чтобы найти совпадения. Если алгоритм верный был ДО внедрения процедуры, такая запись будет только одна, если есть совпадения
Но без условия LIMIT 1 он будет перебирать записи уже после того, как найдёт нужную, а это лишняя нагрузка на БД.
Ставь поле unique, бд при занесении дубликата, возвратит ошибку, парси ее на предмет того, что поле не может быть продублировано -> выноси сообщение пользователю
etc код у меня другой ... тот что я привёл этоо просто пример =) ChaaK О_О зачем так извращятся?)... SMiX +1 прав нада будет сделать =) Pashkela он из БД выберет только 1но совпадение .. мне большене нада =)
1 - проверка наличия 2 - регистрация PHP: if(@mysql_query("INSERT INTO {$this->prefix} users SET login='{$login}', pass='{$pass}")) { return true; } else { if(@stristr(mysql_error(),'duplicate')) { //уже есть } }
Omg, а не удобнее ли #__ ? проверка не должна основываться на принудительном вызове ошибки. Это крайне неправильный подход. Ну а определение типа ошибки методом поиска слова в ней - это конечно полный пипец.