Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysqli] połączenie i pobranie danych
Forum PHP.pl > Forum > PHP > Object-oriented programming
PawelC
Hej smile.gif
Piszę sobie klasę do obsługi bazy danych, wyczarowałem taki kod:
  1. <?php
  2.  
  3. class sqli_driver
  4. {
  5.    public function sqli_connect()
  6.    {
  7.        $mysqli=new mysqli('localhost','root','','katalog');
  8.        if(mysqli_connect_errno())
  9.        {
  10.            echo "Wystąpił błąd podczas połączenia z bazą danych!";
  11.        }
  12.      
  13.    }
  14.    public function pobierzDane()
  15. {
  16.  
  17.            $result=$mysqli -> query("select * from kategorie");
  18.            while($data=$result->fetch_object())
  19.            {
  20.                echo $data->id." : ".$data->kategoria." </br />";
  21.            }
  22. }
  23.        }
  24.      
  25.  
  26.  
  27.  
  28. $sqli=new sqli_driver;
  29. $sqli->sqli_connect()->pobierzDane();
  30. ?>

Mój problem polega na tym jak zrobić osobno połączenie z bazą i pobranie danych coś na zasadzie połączenie->pobranie danych.
Próbowałem tak:
  1. <?php
  2. $sqli->sqli_connect()->pobierzDane();
  3. ?>

Ale to nie działa i wywala mi błąd.
Cytat
Fatal error: Call to a member function pobierzDane() on a non-object in C:\wamp\www\oop\sql.class.php on line 29
skowron-line
  1. <?php
  2. $sqli=new sqli_driver();
  3. ?>
PawelC
Dałem tak:
  1. <?php
  2. $sqli=new sqli_driver();
  3. $sqli->sqli_connect()->pobierzDane();
  4. ?>

I nadal ten sam błąd co był sad.gif
skowron-line
Tak tego nie zrobisz bo toje metody nic nie zwracają.
PawelC
A więc jak najlepiej to zrobić według Ciebie, sorki za głupie pytania ale dopiero się uczę smile.gif
I jeszcze jedno, czy jest taka możliwość żeby nie robić tak:
  1. <?php
  2. echo $data->id." : ".$data->kategoria." </br />";
  3. ?>

Tylko żeby automatycznie pobierał dany z wszystkich tabel i je wyświetlił?
shpyo
  1. <?php
  2.  
  3. class sqli_driver
  4. {
  5.   public function sqli_connect()
  6.   {
  7.       $mysqli=new mysqli('localhost','root','','katalog');
  8.       if(mysqli_connect_errno())
  9.       {
  10.           echo "Wystąpił błąd podczas połączenia z bazą danych!";
  11.       }
  12.       else
  13.          return $this;
  14.   }
  15.   public function pobierzDane()
  16.   {
  17.      $result=$mysqli -> query("select * from kategorie");
  18.       while($data=$result->fetch_object())
  19.       {
  20.          echo $data->id." : ".$data->kategoria." </br />";
  21.        }
  22.   }
  23. }
  24.  
  25. $sqli=new sqli_driver;
  26. $sqli->sqli_connect()->pobierzDane();
  27. ?>


Jak chcesz się odwoływać $sqli->sqli_connect()->pobierzDane(); to $sqli->sqli_connect() - musi to zwrócić "wskaźnik" do Twojego obiektu, potem będziesz mógł się odwołać do metody pobierzDane().
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.