Как Нормально Пользоваться Mysql?

BlackShadow

Well-Known Member
04.02.2011
111
3
#1
Народ. Вот уже пользуюсь мускулом, создаю, редактирую и прочее... Но у меня такое чувство, что что-то делаю не так.

Вот допустим, я создал базу данных с таблицей, где есть ID, логин и пароль пользователя. Когда он регистрируется, то я добавляю новую запись. Но вот такой момент. Если ник ВДРУГ повторяется, то мне нужно создать цикл for, в котором я буду проверять, совпало или нет, правильно? или есть какие-то другие способы сравнения введенных данных с базой?

Или вот второй момент - авторизация. Мне ОПЯТЬ нужно сделать for по всем записям в базе, чтобы проверить наличие такого пользоваеля?

Объясните нубику, пожалуйста...
 
B

Bugnet

Гость
#3
Зачем for ? Делайте запрос в базу данных только по логину и извлекайте, например, id, если id не пустой - значит: запрос прошёл, т.е. в базе данных есть уже такой пользователь.
$q = mysql_query("SELECT id FROM users WHERE login='$login'");
Если пусто (empty), то разрешайте регистрацию нового пользователя.
Можно реализовать запрос сразу после того как пользователь покинул поле логина и начал вводить пароль- это если дружите с jQuery(JS)-Ajax. Всё будет выглядеть как на этой странице (введите логин Status)
 

BlackShadow

Well-Known Member
04.02.2011
111
3
#4
Я не понял, как пользоваться...

PHP:
$DBS = mysql_connect("localhost","ALEXANDR","endo1992");
if ($DBS){
echo "Соединил с БД<br>";

mysql_select_db("triplekill",$DBS);
$check = mysql_query("SELECT id FROM users WHERE log='$log'");
echo $check;

// Здесь он мне выдает результат Resourse id #5, хотя я не знаю, что это. Мне просто нужно проверить - занят логин или нет.

mysql_close($DBS);

} else {
echo "Не удалось соединиться<br>";
}
 
R

rampa

Гость
#5
Шестая строка, и немного далее:

PHP:
$check = mysql_query("SELECT id FROM users WHERE log='$log'");
if( mysql_num_rows($check) == 0 ) {
// Логин не занят. Запрос к БД вернул ноль строк, т.е. нет такого id где log='проверяемый логин'
} else {
// Логин занят. Запрос вернул одну, либо, не дай бог более одной строк с результатом
}
Функция mysql_query() возвращает Resourse id, но не строку, не true/false, не число или массив, вроде так, может кто-то поправит меня. Затем это Resourse id используется в функциях: mysql_num_rows, mysql_fetch_array и пр., это просто php api которое парсит вывод mysql сервера