За последние 24 часа нас посетили 208059 программистов и 4638 роботов. Сейчас ищут 1595 программистов ...

Запрос PhP

Тема в разделе "PHP для новичков", создана пользователем phprup, 2 мар 2023.

Метки:
  1. phprup

    phprup Новичок

    С нами с:
    16 июл 2022
    Сообщения:
    12
    Симпатии:
    0
    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 не понимаю в переменную попадает логин ок,но причем тут больше нуля?вообщем эту сточку не понимаю как она работает.
     
  2. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    На форуме есть специальная кнопка для вставки кода с выбором языка.

    В переменную $rowCount попадает количество строк из базы данных, соответствующих запросу. В данном случае это либо 0, либо 1 (надеюсь логин является уникальным в базе, иначе их может быть и больше). Потому, если > 0 то что-то нашлось в базе и такой пользователь уже есть.
     
    #2 dantemgs, 2 мар 2023
    Последнее редактирование: 2 мар 2023
  3. phprup

    phprup Новичок

    С нами с:
    16 июл 2022
    Сообщения:
    12
    Симпатии:
    0
    Все ровно не понятно как он и с чем сверяет в переменной $rowCount хранятся все логины из бд,на вход приходит такой же логин,что это значит > 0,если мы должны сверить равен он то что есть в базе данных или нет.
     
  4. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Вы путаете "sign up" и "log in". Ваш код это sign up.
    А также еще раз повторю, в переменной хранится количество строк.
     
    #4 dantemgs, 2 мар 2023
    Последнее редактирование: 2 мар 2023
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.835
    Симпатии:
    1.335
    Адрес:
    Лень
    включи отображение ошибок для начала. o_O Это не рабочий код
     
  6. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Чтобы там хранились "все логины"(надеюсь всего 1) надо:
    PHP:
    1. $rowCount = $query->fetch_all();
    А у вас:
    PHP:
    1. $rowCount=$query->num_rows
    Та там только пробелы слиплись, не бей.
     
    #6 dantemgs, 2 мар 2023
    Последнее редактирование: 2 мар 2023
  7. phprup

    phprup Новичок

    С нами с:
    16 июл 2022
    Сообщения:
    12
    Симпатии:
    0
    ЧТО то я этот php не понимаю его поведения,тут видимо как и в английском языке понять не возможно надо просто запомнить и все))
    --- Добавлено ---
    Если бы еще говорили бы как было бы идеально но этого как всегда нет))
     
  8. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Вот что сказал дядя нейросеть на ваш код:
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну вот видимо потому что с английским плохо, поэтому и не понимаешь. num_rows - это сокращение от number of rows - количество рядов, дословно. Т.е. в этом поле хранится количество строк БД, найденных по запросу. И если оно больше нуля, то логин соответственно, есть в базе. Я бы, конечно, всё таки сразу у базы запросил количество, и оперировал с ним, но можно и так.
     
  10. phprup

    phprup Новичок

    С нами с:
    16 июл 2022
    Сообщения:
    12
    Симпатии:
    0
    Мне так все ровно не понятно что больше нуля то?тут понять можно если это true, это новичек понимает,а больше нуля что больше то букв в строке или что .
     
  11. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Допустим бд выглядит как-то так:
    Код (Text):
    1.  
    2. id | login | password | something |
    3. -----------------------------------
    4. 1  | vacja | ******** |   red     |
    5. -----------------------------------
    6. 2  | vacja |  *****   |  green    |
    7. -----------------------------------
    8. 3  | masha |    **    |   red     |
    9. -----------------------------------
    Если $_POST['login'] = 'vacja' то в переменной $rowCount будет лежать в итоге цифра 2 (хотя такого в идеале не должно быть, как и не стоит хранить пароли как они есть в бд).
    Если $_POST'[login'] = 'masha' то в переменной $rowCount будет лежать в итоге цифра 1.
    Если $_POST'[login'] = 'petja' то в переменной $rowCount будет лежать в итоге цифра 0 (то есть нет записей, удовлетворяющих SQL запросу).
    В $rowCount у вас будет лежать количество записей (синонимы: строк, рядов) в бд, удовлетворяющих условию login = '$_POST[login]'. Поэтому их проверяют на условие что оно больше 0. Не помню точно, но если я не ошибаюсь, когда происходит ошибка, то $rowCount будет равна '-1'.
     
  12. phprup

    phprup Новичок

    С нами с:
    16 июл 2022
    Сообщения:
    12
    Симпатии:
    0
    Поняла теперь спасибо,