if(isset($_POST['send'])){ $query = $db->query("SELECTloginFROM users WHERElogin='$_POST[login]'"); $rowCount=$query->num_rows; if($rowCount>0){ echo "<br>Данный пользователь есть в базе данных"; } else{ $db->query("INSERT INTO users VALUES(NULL,'$_POST[login]','$_POST[password]',NULL)"); $_SESSION['signup']=true; header("Location: ../public/login.php"); } } Вопрос по строчно,1 если кнопка нажата тогда проверяем есть ли совпадения в логине, 2 тут я так понимаю $rowCount=$query->num_rows; это выводит из базы данных по строчно, а вот 3 не понимаю в переменную попадает логин ок,но причем тут больше нуля?вообщем эту сточку не понимаю как она работает.
На форуме есть специальная кнопка для вставки кода с выбором языка. В переменную $rowCount попадает количество строк из базы данных, соответствующих запросу. В данном случае это либо 0, либо 1 (надеюсь логин является уникальным в базе, иначе их может быть и больше). Потому, если > 0 то что-то нашлось в базе и такой пользователь уже есть.
Все ровно не понятно как он и с чем сверяет в переменной $rowCount хранятся все логины из бд,на вход приходит такой же логин,что это значит > 0,если мы должны сверить равен он то что есть в базе данных или нет.
Вы путаете "sign up" и "log in". Ваш код это sign up. А также еще раз повторю, в переменной хранится количество строк.
Чтобы там хранились "все логины"(надеюсь всего 1) надо: PHP: $rowCount = $query->fetch_all(); А у вас: PHP: $rowCount=$query->num_rows Та там только пробелы слиплись, не бей.
ЧТО то я этот php не понимаю его поведения,тут видимо как и в английском языке понять не возможно надо просто запомнить и все)) --- Добавлено --- Если бы еще говорили бы как было бы идеально но этого как всегда нет))
Ну вот видимо потому что с английским плохо, поэтому и не понимаешь. num_rows - это сокращение от number of rows - количество рядов, дословно. Т.е. в этом поле хранится количество строк БД, найденных по запросу. И если оно больше нуля, то логин соответственно, есть в базе. Я бы, конечно, всё таки сразу у базы запросил количество, и оперировал с ним, но можно и так.
Мне так все ровно не понятно что больше нуля то?тут понять можно если это true, это новичек понимает,а больше нуля что больше то букв в строке или что .
Допустим бд выглядит как-то так: Код (Text): id | login | password | something | ----------------------------------- 1 | vacja | ******** | red | ----------------------------------- 2 | vacja | ***** | green | ----------------------------------- 3 | masha | ** | red | ----------------------------------- Если $_POST['login'] = 'vacja' то в переменной $rowCount будет лежать в итоге цифра 2 (хотя такого в идеале не должно быть, как и не стоит хранить пароли как они есть в бд). Если $_POST'[login'] = 'masha' то в переменной $rowCount будет лежать в итоге цифра 1. Если $_POST'[login'] = 'petja' то в переменной $rowCount будет лежать в итоге цифра 0 (то есть нет записей, удовлетворяющих SQL запросу). В $rowCount у вас будет лежать количество записей (синонимы: строк, рядов) в бд, удовлетворяющих условию login = '$_POST[login]'. Поэтому их проверяют на условие что оно больше 0. Не помню точно, но если я не ошибаюсь, когда происходит ошибка, то $rowCount будет равна '-1'.