За последние 24 часа нас посетил 16801 программист и 1643 робота. Сейчас ищут 916 программистов ...

Сверка с бд при вводе логина и пароля

Тема в разделе "PHP для новичков", создана пользователем MrMos, 19 дек 2014.

  1. MrMos

    MrMos Новичок

    С нами с:
    16 дек 2014
    Сообщения:
    36
    Симпатии:
    0
    При вводе логина и пароля дает ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\MyBlog.ua\www\reg.php on line 22
    Ошибка логина или пароля

    Вот код:
    Код (Text):
    1. if (isset($_POST["vvod"])) {
    2.      $v_login = $POST["v_login"];
    3.      $v_password = md5($POST["v_password"]);
    4.      $query = mysql_query("SELLECT * FROM reg WHERE login = '$v_login'");
    5.      $user_data=mysql_fetch_array($query);
    6.      
    7.      if ($user_data['password'] == $v_password) {
    8.          echo "Вход выполнен";
    9.      }
    10.      else {
    11.          echo "Ошибка логина или пароля";
    12.      }
    13.  }
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Просто переводи ошибку на русский:
    Внимание: mysql_fetch_array() первый параметр должен быть типа ресурс, получен тип boolean

    Читаем документацию php.net/manual/ru/function.mysql-fetch-array.php

    Посмотри что mysql_query вернула.

    Возвращаемые значения mysql_query.
    Возвращает массив строк, соответствующих обработанному ряду результата запроса, или FALSE, если рядов больше нет.

    То есть, если нет результата нет, ошибка или закончились данные то вернёт FALSE.

    Нет результата будет FALSE это тип boolean.

    сделай var_dump($query); и посмотри результат
     
  3. MrMos

    MrMos Новичок

    С нами с:
    16 дек 2014
    Сообщения:
    36
    Симпатии:
    0
    Блин я походу совсем тупой, в твоем объяснении даже ничего не понял....
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если в sql запросе будет ошибка или по другим причинам, то функция mysql_query вернёт значение FALSE.
    А ты используешь значение которое возвращает функция mysql_query в другой функции mysql_fetch_array.
    Когда всё идёт хорошо, твой код работает, а вот когда проблемы он перестаёт работать.
    Из-за того что в функцию mysql_fetch_array ты отсылаешь неверные аргументы, она ждёт тип переменной resource а ты даёшь boolean.

    Это как в бензобак лить воду вместо бензина, а как ты контролируешь это? Проверяешь бензин по запаху например.

    if($query) // if не сработает при $query = FALSE
    {
    $user_data=mysql_fetch_array($query);
    }
     
  5. MrMos

    MrMos Новичок

    С нами с:
    16 дек 2014
    Сообщения:
    36
    Симпатии:
    0
    Моя самая большая проблема это ошибки в тексте...... исправил $POST на $_POST а также SELLEKT на SELEKT \
    и все заработало.....

    это все так тупили как я сейчас или у меня нет будущего в создании сайтов ?
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Это твой первый язык?
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тут дело в том что есть книги в которых всё расписано в причинно следственных связях. И документацию лучше читать, зачем придумывать что-то своё.
    С опытом всё придёт, но нужна читать теорию.