• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Call to undefined method stdClass::query()

Object Storage Arubacloud
0 głosów
446 wizyt
pytanie zadane 28 czerwca 2022 w PHP przez Niecierpliwiec Nowicjusz (120 p.)

Pisałem połączenie bazy danych do logowania. I wyskakuje mi błąd przy query() 

Call to undefined method stdClass::query()

<?php

    require_once "connect.php";


    $polaczenie == @new mysqli($host, $db_user, $db_password, $db_name);

    if ($polaczenie->connect_errno = 0)
    {
        echo "error: " . $polaczenie->connect_errno . "opis:"   . $polaczenie->connect_error;
    }
    else
    {
     
    $login = $_POST['username'];
    $password = $_POST['password'];

    mysqli_close($polaczenie);

    $sql = " SELECT * FROM uzytkownicy WHERE user='$login' AND password='$password' "; 

    if ($rezultat = $polaczenie->query($sql))  
    {
            $ilu_userow = $rezultat->num_rows;
            if(ilu_userow>0)
            {
                $wiersz = $rezultat->fetch_assoc();
                $user = $wiersz['user'];
                $rezultat = free_result();
            }

    }
    }
   

 

1 odpowiedź

+1 głos
odpowiedź 28 czerwca 2022 przez Comandeer Guru (601,110 p.)

W linii 18. zamknąłeś połączenie z bazą danych. Nic dziwnego, że kolejne zapytanie się nie chce wykonać.

Przy okazji, polecam poczytać o zabezpieczeniu zapytań, bo obecnie bardzo prosto zrobić Ci atak SQL injection.

komentarz 28 czerwca 2022 przez Comandeer Guru (601,110 p.)

Bo w if nie używasz zmiennej tylko stringa ilu_userow. Brakuje Ci $ na początku

Dodatkowo w linii 8. powinno być $rezultat->free_result();

komentarz 28 czerwca 2022 przez Niecierpliwiec Nowicjusz (120 p.)

nadal mi nie zwraca w echo tego user 

    $sql = " SELECT * FROM uzytkownicy WHERE user='$login' AND password='$password' "; 

    if ($rezultat = $polaczenie->query($sql))  
    {
            $ilu_userow = $rezultat->num_rows;
            if($ilu_userow>0)
            {
                $wiersz = $rezultat->fetch_assoc();
                $user = $wiersz['user'];

                $rezultat -> free_result();
                echo $user;
              
            }

    }
    }
   
   


 

komentarz 28 czerwca 2022 przez Comandeer Guru (601,110 p.)

A wgl wchodzi do tego całego if-a? Co się znajduje w zmiennej $rezultat po wykonaniu zapytania?

komentarz 28 czerwca 2022 przez Niecierpliwiec Nowicjusz (120 p.)
chyba nie, ogólnie po wpisaniu loginu i hasła pojawia się biała strona
komentarz 28 czerwca 2022 przez VBService Ekspert (253,340 p.)

Może nie ma takiego user-a w bazie danych o podanym loginie i haśle.

Spróbuj tak, zobacz co się wyświetli

$sql = "SELECT * FROM uzytkownicy WHERE user='$login' AND password='$password'"; 

// echo "$sql<br>"; // Od komentuj jeżeli chcesz sprawdzić zapytanie sql-owe
 
if ($rezultat = $polaczenie->query($sql))  
{
     if($rezultat->num_rows)
     {
          $wiersz = $rezultat->fetch_assoc();
          $user = $wiersz['user'];
 
           $rezultat->free_result();
           echo $user;           
      } else {
           echo 'Użytkownik o podanym loginie nie jest zapisany w bazie danych'
              . '<br>lub podany login lub hasło są niepoprawne';
      } 
} else {
    echo 'Wystąpił problem z zapytaniem sql';
}

 

Podobne pytania

0 głosów
1 odpowiedź 469 wizyt
0 głosów
0 odpowiedzi 731 wizyt
0 głosów
1 odpowiedź 640 wizyt

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...