Obiektowy PHP i obsługa MySQl, błąd

Witam!

Staram się uczyć obiektowego PHP i postanowiłem zrobić klasę do obsługi bazy danych, i już od początku problem.

Mam kod:

<?php

include('class.php');

$db = new BazaDanych();

$connect = $db->dbConnect();

$wynik = $connect->query("select name, pass from users where name='admin'");

$login = $_POST['login'];

$password = $_POST['haslo'];

if (empty($login)==1 || empty($password)==1)

{

echo "Niepoprawne hasło lub login!";

}

else

{

 $password = md5($password);

 session_start();

 $_SESSION['login']=$login;

 $_SESSION['password']=$password;

}


?>

i klasa, w osobnym pliku:

<?php

class BazaDanych

{

 function dbConnect()

 {

 include('../database/config_db.php');

 $dbConnect = @new mysqli("$dbHost", "$dbUser", "$dbPass", "$dbName");

    if (mysqli_connect_errno() != 0)

      {

      echo "Wyst±pił bł±d poł±czenia z baz± danych. Numer błędu: ".mysqli_connect_error();

      exit;

      }

 }

}

?>

Połączenie nie wywala żadnego błędu, ale zapytanie:

Dlaczego tak?

Rozwiązanie znalazłem sam, zapomniałem zwrócić wartości z f-cji dbConnect();, temat wg. uznania moderatora do kosza

sporo błędów tutaj masz…

  1. $connect = $db->dbConnect(); funkcja dbConnect() nic nie zwraca, więc nic nie przypiszesz do zmiennej $connect

  2. $connect->query() jak już wspomniałem, $connect jest niezdefiniowany wciąż, prawdopodobnie chciałeś wcześniej by dbConnect() zwracalo obiekt mysqli, ale po co nadbudowywać tak już istniejącą klasę?

ad.1 Tak wiem, dopisałem później że znalazłem błąd, ale ty już wtedy chyba odpisywałeś.

ad.2 Dotyczy pierwszego, wystarczyło return.

A tworze to w celu nauczenia się obiektowego PHP, więc pewnie i tak nie będzie miało żadnego zastosowania. Poprostu dorwałem swój kawałęk kodu i chciałęm go zmienić na obiektowy :slight_smile:

Dzięki i pozdrawiam

w ten sposób się niczego nie nauczysz, bo Twoje podejście jest błędne chcesz przerobić na obiekt coś co już jest obiektem

Teraz już wiem, w sumie chciałem zaoszczędzić kodu, i zebrałem includowanie Hosta, użytkowanika, hasła i sprawdzanie czy połączenie nie wywala błędu w jeden obiekt. A teraz zacząłem trochę od innej strony, i tworzę system logowania na obiektach, i cały system jest jedną klasą, a poszczególne zadania obiektami. Cóż człowiek uczy się na własnych błędach.

Pozdrawiam

no to znów popełniasz błąd, brnąc błędnie w kierunku tzw. klas bogów

Dlaczego? Tworzę klasę logowanie, i w niej funkcje: zaloguj, wyloguj, zarejestruj, sprawdz(czy zalogowany czy nie)? I o co chodzi z klasami bogów?

Pozdrawiam