Napisałem strukturalnie pewien "serwis" ogłoszeń towarzyskich. Wszystko pięknie działa, postanowiłem jednak jakiś czas temu liznąć choć trochę programowania obiektowego, a celem praktycznym jest przepisanie głównych modułów tego serwisu właśnie kierując się podejściem obiektowym. Mam taką oto klasę łączącą się z serwerem MySQL (napisałem osobną klasę, bo chciałbym aby potem była ona dziedziczona w innych). Oto ona:
Kod
class MySQL {
private $db_host = 'localhost';
private $db_user = 'root';
private $db_haslo = '';
private $db_name = 'baza';
public $db_polaczenie;
public $db_wybierz;
public function polacz_mysql($db_host, $db_user, $db_haslo, $db_name) {
$this->db_polaczenie = mysql_connect($this->db_host, $this->db_user, $this->db_haslo);
$this->db_wybierz = mysql_select_db($this->db_name);
}
public function rozlacz_mysql($db_polaczenie) {
mysql_close($this->db_polaczenie);
return true;
}
}
private $db_host = 'localhost';
private $db_user = 'root';
private $db_haslo = '';
private $db_name = 'baza';
public $db_polaczenie;
public $db_wybierz;
public function polacz_mysql($db_host, $db_user, $db_haslo, $db_name) {
$this->db_polaczenie = mysql_connect($this->db_host, $this->db_user, $this->db_haslo);
$this->db_wybierz = mysql_select_db($this->db_name);
}
public function rozlacz_mysql($db_polaczenie) {
mysql_close($this->db_polaczenie);
return true;
}
}
W pliku online.php mam fragmenty kodu odpowiedzialne za zliczanie autoryzowanych użytkowników online i przekazywanie naz użytkowników (loginów) do tablicy. Strukturalnie wszystko działa, ale w podejściu obiektowym mam problemy w formułowaniu zapytań do bazy po utworzeniu egzemplarza:
Kod
//tworzenie nowego egzamplarza klasy i wywołanie metody odpowiedzialnej za łączenie z bazą danych;
$obliczenia = new MySQL;
$obliczenia->polacz_mysql($db_host, $db_user, $db_haslo, $db_name);
$zapytanie_online = "SELECT users.u_login AS online FROM online, users WHERE online.u_id = users.u_id";
$obliczenia = new MySQL;
$obliczenia->polacz_mysql($db_host, $db_user, $db_haslo, $db_name);
$zapytanie_online = "SELECT users.u_login AS online FROM online, users WHERE online.u_id = users.u_id";
Googlując sobie trochę, znalazłem propozycję, aby łączyć się z bazą w ujęciu obiektowym za pomocą wbudowanej w php klasy, wygląda to tak:
Kod
@ db = new mysqli('localhost', 'user', 'pass', 'nazwa bazy');
Autor artykułu odwołuje się następnie do tego zapytania w sposób następujący:
Kod
$wynik = db->query($zapytanie);
$tablica = db->fetch_row($wynik);
$tablica = db->fetch_row($wynik);
Niestety nie potrafię zrozumieć, w jaki sposób wykonać takie zapytania jeśli chciałbym posłużyć się moją klasą. Próbowałem już wielu rozwiązań ale php wywala mi błędy. Czy mogę uzyskać waszą pomoc w jaki sposób odwołać się do odpowiednika obiektu db->query posługując się moim kodem? Jednocześnie jeśli pytanie wyda się lamerskie, prosiłbym zaawansowanych użytkowników o wyrozumiałość i nie obrzucanie mnie mięsem, że rzucam się z motyką na słońce nie znając podstaw :-) Z góry dziękuję za wszystkie odpowiedzi.