За последние 24 часа нас посетили 17460 программистов и 1722 робота. Сейчас ищут 952 программиста ...

Ошибка и не записывает в базу данных

Тема в разделе "PHP для новичков", создана пользователем NoPr0gress, 1 дек 2016.

  1. NoPr0gress

    NoPr0gress Новичок

    С нами с:
    11 ноя 2016
    Сообщения:
    48
    Симпатии:
    3
    PHP:
    1. <?php
    2.     header("Content-Type :text/html; charset = utf-8");
    3.     session_start();
    4.     include('config.php');
    5.  
    6.     $_SESSION['reg'] = false;
    7.     if(isset($_POST['username']))
    8.         {
    9.             $username = $_POST['username'];
    10.             if ($username == '')
    11.             {
    12.                 unset($username);
    13.             }
    14.         }
    15.         if (isset($_POST['password']))
    16.         {
    17.             $password=$_POST['password'];
    18.             if ($password =='')
    19.             {
    20.                 unset($password);
    21.             }
    22.         }
    23.     $username = stripslashes($username);
    24.     $username = htmlspecialchars($username);
    25.     $username = trim($username);
    26.     $password = stripslashes($password);
    27.     $password = htmlspecialchars($password);
    28.     $password = trim($password);
    29.  
    30.     $result = mysqli_query($db,"SELECT id FROM users WHERE login=$username");
    31.    
    32.     $myrow = mysqli_fetch_array($result);
    33.     if (!empty($myrow['id']))
    34.     {
    35.         exit ("Vabandame, sisestatud kasutajanimi on juba registreeritud, sisestage teine kasutajanimi.");
    36.     }
    37.     $result2 = mysqli_query($db,"INSERT INTO users (login,password) VALUES('$username','$password') ");
    38.  
    39.     $_SESSION['reg'] = true;
    40.     echo "<a href='index.php'>back</a>";
    41. ?>


    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in X:\Server\htdocs\form\reg.php on line 32
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    внимание: mysqli_fetch_array имеет 2 параметра mysqli_fetch_array( result, type )
     
    NoPr0gress нравится это.
  3. NoPr0gress

    NoPr0gress Новичок

    С нами с:
    11 ноя 2016
    Сообщения:
    48
    Симпатии:
    3
    спасибо
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    пишу мысли:

    Ожидает параметр 1. Значит в него не попадает этот самый первый параметр. Нужно искать выше. что то не так с переменной $result

    PHP:
    1.  $result = mysqli_query($db,"SELECT id FROM users WHERE login=$username");
    ищем выше подключение к базе данных (переменную $db). Я плохо смотрю или её нет?

    И потом, если я не ошибаюсь, то нужно писать mysqli_fetch_assoc. Но тут могу ошибаться. Возможно работают оба варианта.
    --- Добавлено ---
    + я бы переменную $username взял бы в одинарные кавычки. '$username' вот так.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    $db скорее всего в config.php, а mysqli_fetch_array, естественно, тоже работает. Просто что-то с $result
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Может быть всё дело в волшебных кавычках? :)
    на сколько я знаю, для строчных значений они обязательны.
     
  7. NoPr0gress

    NoPr0gress Новичок

    С нами с:
    11 ноя 2016
    Сообщения:
    48
    Симпатии:
    3
    я уже разобрался
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    а в чем проблема была?
     
  9. NoPr0gress

    NoPr0gress Новичок

    С нами с:
    11 ноя 2016
    Сообщения:
    48
    Симпатии:
    3
    PHP:
    1. $result2 = mysqli_query($db,"INSERT INTO users (login,password) VALUES('$username','$password') ");
    в бд было pass а тут password

    еще кавычки поставил где выше говорили '$username'

    и еще в другом файле когда сменил <? ?> на <?php ?> все чудом заработало
     
  10. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Попробуйте для проверки:

    1. $result = mysqli_query("SELECT `id` FROM `users` WHERE login='$username'");
    2. $myrow = mysqli_fetch_array($result);
     
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    А какой версией php пользуетесь ?
     
  12. NoPr0gress

    NoPr0gress Новичок

    С нами с:
    11 ноя 2016
    Сообщения:
    48
    Симпатии:
    3
    PHP Version 7.0.9
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Автор, на будущее, с вероятностью 99% это значит, что запрос прошел, но БД вернула ошибку. Чтобы это отладить, выведи на страницу или посмотри в дебаггере, если есть, свой сформированный SQL-запрос. Скопируй его и скорми базе напрямую. Увидишь, в чем беда.

    Либо, просто после места с ошибкой используй https://php.net/manual/ru/mysqli.error

    В идеале, конечно, написать или позаимствовать полноценный обработчик ошибок. Но пока и так сойдет.
     
    askanim нравится это.