За последние 24 часа нас посетил 22331 программист и 1027 роботов. Сейчас ищут 683 программиста ...

Не понимаю ошибку в функции mysql

Тема в разделе "PHP для новичков", создана пользователем lesnik131, 22 апр 2018.

  1. lesnik131

    lesnik131 Новичок

    С нами с:
    22 апр 2018
    Сообщения:
    1
    Симпатии:
    0
    Всем добрый день.
    Пишу вот такой код (а вернее беру из учебника), который должен производить регистрацию, то есть брать данные из формы и записывать в БД.
    При этом не дает записать данные по неизвестной причине, все доступы даны.
    Код (Text):
    1.  
    2. [LIST=1]
    3. [*]<?php
    4. [*]    //Устанавливаем доступы к базе данных:
    5. [*]        $host = 'localhost'; //имя хоста, на локальном компьютере это localhost
    6. [*]        $user = 'root'; //имя пользователя, по умолчанию это root
    7. [*]        $password = ''; //пароль, по умолчанию пустой
    8. [*]        $db_name = 'testbd'; //имя базы данных
    9. [*]
    10.  
    11. [*]    //Соединяемся с базой данных используя наши доступы:
    12. [*]        $link = mysqli_connect($host, $user, $password, $db_name);
    13. [*]    /*
    14. [*]        Соединение записывается в переменную $link,
    15. [*]        которая используется дальше для работы mysqi_query.
    16. [*]    */
    17. [*]?>
    18. [*]<!-- Это форма регистрации: -->
    19. [*]    <form action='reg.php' method='POST'>
    20. [*]        <input name='login'> логин <br>
    21. [*]        <input name='password' type='password'> пароль <br>
    22. [*]        <input name='password_confirm' type='password'> подтвердите пароль <br>
    23. [*]        <input type='submit' value='Отправить'>
    24. [*]    </form>
    25. [*]<!-- Конец формы регистрации. -->
    26. [*]<?php
    27. [*]    //Если форма регистрации отправлена и ВСЕ поля непустые...
    28. [*]    if (
    29. [*]        !empty($_REQUEST['login'])
    30. [*]        and !empty($_REQUEST['password'])
    31. [*]        and !empty($_REQUEST['password_confirm'])  
    32. [*]        )
    33. [*]        {
    34. [*]
    35.  
    36. [*]        //Пишем логин и пароль из формы в переменные (для удобства работы):
    37. [*]        $login = $_REQUEST['login'];
    38. [*]        $password = $_REQUEST['password'];
    39. [*]        $password_confirm = $_REQUEST['password_confirm']; //подтверждение пароля
    40. [*]
    41.  
    42. [*]        //Если пароль и его подтверждение совпадают...
    43. [*]        if ($password == $password_confirm) {
    44. [*]            /*
    45. [*]                Выполняем проверку на незанятость логина.
    46. [*]                Ответ базы запишем в переменную $is_login_free.
    47. [*]
    48.  
    49. [*]                ВЫБРАТЬ ИЗ таблицы_users ГДЕ логин = $login.
    50. [*]            */
    51. [*]            $query = 'SELECT*FROM users WHERE login="'.$login.'"';
    52. [*]            $is_login_free = mysqli_query($link, $query);
    53. [*]            echo (bool)$is_login_free;
    54. [*]            echo '<br>';
    55. [*]            var_dump(mysqli_fetch_assoc($is_login_free));
    56. [*]            echo '<br>';
    57. [*]            //Если $is_login_free пустой - то логин не занят!
    58. [*]            if (empty($is_login_free)) {
    59. [*]                /*
    60. [*]                    Формируем и отсылаем SQL запрос:
    61. [*]
    62.  
    63. [*]                    ВСТАВИТЬ В таблицу_users УСТАНОВИТЬ
    64. [*]                    логин = $login И пароль = $password.
    65. [*]                */
    66. [*]                $query = 'INSERT INTO users SET login='.$login.', password='.$password;
    67. [*]                mysqli_query($link, $query);
    68. [*]
    69.  
    70. [*]                //Выведем сообщение об успешной регистрации:
    71. [*]                echo 'Вы успешно зарегистрированы!';
    72. [*]            }
    73. [*]            //Если $is_login_free НЕ пустой - то логин занят!
    74. [*]            else {
    75. [*]                echo 'Такой логин уже занят!';
    76. [*]            }
    77. [*]        }
    78. [*]        //Если пароль и его подтверждение НЕ совпадают - выведем ошибку:
    79. [*]        else {
    80. [*]            echo 'Пароли не совпадают!';
    81. [*]        }
    82. [*]    }
    83. [*]    //Не заполнено какого-либо из полей.
    84. [*]    else {
    85. [*]        echo 'Поля не могут быть пустыми!';
    86. [*]    }
    87. [*]?>
    88. [/LIST]
    При этом в 47 и 49 строке кода я сделал вывод значения функции для отладки и 47я строка выдает "1", а 49 - NULL.
    Какие бы данные не вбивал, всегда скрипт идет по ветке с "Такой логин уже занят!"
    В чем тут может быть ошибка? Помогите разобраться, пожалуйста.
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Перечитай mysqli_query, mysqli_result доку
     
    artoodetoo нравится это.
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
    у тебя есть возможность отладки. у тебя есть доступ к документации. почему ты предпочитаешь вывалить свои ошибки на других?

    ИМХО, нормальные вопросы на форуме относятся к алгоритмам, приёмам и хорошим практикам. но никак не про "почему у меня null в этой строке". это можно и нужно выяснить самомстоятельно.
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @lesnik131, к тому-же в приведённом коде 47-я и 49-я строки - комментарии...