За последние 24 часа нас посетили 35998 программистов и 1671 робот. Сейчас ищут 1066 программистов ...

Нубо меню входа

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

  1. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    Здравствуйте, не пойму. Откуда ошибка. АААААААА. Уже 3 часа сижу, смотрю в "код" и вижу фигу. Ошибка: "sqlsrv_query() expects parameter 1 to be resource, boolean given in C:\OSPanel\domains\test\send.php on line 14"
    Сам "код":
    PHP:
    1. <?php
    2. $namesql="DESKTOP-VRUI3O1\SQLEXPRESS, 1433";
    3. $arraysql = array("Database"=>"Test","UID"=>"Test","PSW"=>"1234");
    4. $connect = sqlsrv_connect($namesql,$arraysql);
    5. if ($connect=false) {
    6.     echo "string";
    7.     # code...
    8.    exit();
    9. }
    10. $user = $_POST['user'];
    11. $password = $_POST['password'];
    12. $query = "SELECT * FROM users WHERE username = '$user' AND password = '$password'";
    13.  
    14. $result = sqlsrv_query($connect,$query) or die(print_r(sqlsrv_erros(),true));
    15. $rows = 0;
    16. while ($rows = sqlsrv_fetch_array($result)) {
    17.     $rows++;
    18.     # code...
    19. }
    20. if ($rows == 1) {
    21.     echo "string";
    22.     # code...
    23. }
    24. else{
    25.     echo "Login or Password not found!";
    26. }
    27.  
    28.  
    29. ?>
    30. <form method="POST" accept="">
    31.     <input type="text" name="user">
    32.     <input type="password" name="password">
    33.     <input type="submit" name="">
    34.  
    35. </form>
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    186
    а почему не mysql?
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
    Код (Text):
    1. if ($connect=false)
    Это что за хрень?
     
  4. Асаша

    Асаша Новичок

    С нами с:
    15 июл 2017
    Сообщения:
    23
    Симпатии:
    2
    miketomlin, не убрал. Это просто проверка, что с подключением всё нормально.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
    Если действовать таким макаром, можно все ветвление убрать нафиг. Ничего не потеряете. Оставьте просто if ($connect) или делайте сразу if ($connect=sqlsrv_connect($namesql,$arraysql)). И на будущее, чтобы не совершать глупых ошибок, пишите константу в сравнениях перед операцией сравнения, а не после.
    --- Добавлено ---
    Наличие POST-параметров нужно проверять. Их значения – экранировать в запросе. Условие с паролем можно вынести из запроса и делать проверку после обычным сравнением.

    $rows = 0; и т.п. – тоже хрень! Делайте по той же схеме, что я выше показал:
    PHP:
    1. if ($rows = sqlsrv_fetch_array($result))
    --- Добавлено ---
    Либо:
    PHP:
    1. if (($rows = sqlsrv_fetch_array($result)) && $rows['password']==$password)
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.810
    Симпатии:
    1.332
    Адрес:
    Лень
    @miketomlin второе либо не == а ===
    Проверка еще на тип данных. Придет в пассворде булеан тип, что будем делать ?
    --- Добавлено ---
    PHP:
    1. $a = 'afasdf';
    2. $b = true;
    3.  
    4. if ( $a == $b )
     
  7. ArtemPetesburg

    ArtemPetesburg Новичок

    С нами с:
    11 май 2018
    Сообщения:
    48
    Симпатии:
    2
    Адрес:
    Санкт-Петербург
    У вас проблема в
    $result = mysqli_query($link, $query); , Вот будет правильный вариант! написания!
    Надеюсь помог.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
    @ArtemPetesburg, чтобы это написать, вам понадобилось больше восьми часов? :)
     
  10. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Не злорадсвуйте. Все мы когда-то начинали. Я убил сутки на первое подключение к бд и писал кипятком, когда вывел массив.
     
  11. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    это не проверка. Это присвоение. Проверка это == или ===

    А так ты просто обнуляешь своё соединение.
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
    @twim32, не клевещите. Я это написал, из-за того что пост ArtemPetesburg'а неожиданно появился перед моим, притом что разница между постами больше восьми часов.