$querylogin = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `login` = '$login'"
if (mysql_result($querylogin, 0)>0)$err = '<div class="erors">Извините, данный логин уже зарегистрирован, выберите другой</div>';
---
Почему SELECT COUNT(`id`) FROM а не SELECT * FROM
Кто объяснит не могу догнать..
SNEG, count('id') - выдаст не строки из таблицы, а их количество. Count и переводится как "количество".
А select * from - выбирает все поля из таблицы.
Логично, что используется count, так как здесь идет проверка на совпадение логина. Если в базе нет пользователя с таким логином, то count('id') будет равен нулю, иначе 1 или более
А ты такое не советуй, раз до конца не понимаешь, что в запросе происходит.
Даже если ты сравнивал
select 'id' from users
с этим:
select * from users
То непонятно лично мне, с какого рожна ты решил, что select * работает быстрее, чем select id.
Select * - собирает абсолютно все поля таблицы, а select id, соответственно только id. Так и что быстрее - собрать ведро семечек или стакан?
Вопрос в другом зачем id считать если мы логин проверяем ?
SNEG, ну ты же представляешь из чего состоит таблица? По-простому, из столбцов и строк.
Твой запрос:
Select count('id') from users where login = $login
По-русски запрос звучит так: посчитай количество строк, где логин = логину, который хотят зарегистрировать.
Здесь не принципиально что оборачивать в count, можно любое поле обернуть, но чаще всего пишут так, оборачивая id, потому как id - 100% заполнен и имеет значение
Я так и понял что там можно что хочешь указать кроме id
SNEG, что хочешь, но нужно точно знать, что значение этого столбца не null.
А select count(*), т.е со звездочкой использовать только когда нужно просто подсчитать все записи в таблице, т.е когда не ичпользуется WHERE. А в таоем случае, лучше конкретизировать поле и, чтобы быть полностью уверенным в его заполненности использовать id, т.к оно 100% ключевое и пустым быть не может