Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Klasa do obsługi MySQL
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Klasa do obsługi MySQL
Technologie webowe

Klasa do obsługi MySQL

WebInside.pl
Ostatnia aktualizacja: 28.04.2004
WebInside.pl
Udostępnij
Udostępnij

Niewątpliwie obsługa baz danych w PHP jest jednym z największych dobrodziejstw, jednak z czasem staje się dość uciążliwa.

W tym artykule pokaże jak napisać cos w rodzaju sterownika do obsługi bazy danych MySQL. Jaka będzie różnica miedzy nim a standardowa obsługą bazy? Przede wszystkim prostota, nie trzeba będzie pamiętać nazw zmiennych i co najważniejsze dla każdej z baz danych obsługiwanej przez php można napisać taka sama klasę, dzięki czemu nie trzeba będzie pamiętać nazw funkcji do obsługi konkretnej bazy danych. Co do prędkości to korzystanie z takiej klasy nie spowalnia wykonywania skryptu, wiec chyba warto poświęcić chwile czasu na napisanie jej.

Pisanie zaczniemy od zdefiniowania potrzebnych nam zmiennych, na pewno przyda się zmienna $connection będzie odpowiedzialna za połączenie z baza danych, $database określa nazwę naszej bazy danych, będziemy też potrzebować pytania, czyli $query, skoro mamy pytanie to przyda się również odpowiedź, a raczej rezultat $result oraz $records tu będą przetrzymywane rekordy, do tego dodamy jeszcze dwie zmienne $queries: ilość zadanych pytań do bazy danych, oraz $lastId będzie przechowywać wartość ostatnio użytego pola o właściwości auto_increment. Teraz zobaczmy jak wygląda nasza klasa.

class sqlObject {
var $connection;
var $database;
var $query;
var $result = array();
var $records = array();
var $queries = 0;
var $lastId;
}

Nie ma tego za dużo, ale zaraz dopiszemy odpowiednie metody, zacznijmy od funkcji error(), która będzie przechwytywać i pokazywać na ekranie błędy MySQL, przyda się to podczas debugowania aplikacji.

function error() {
echo '<b>’.mysql_errno().'</b> : ’.mysql_error().'<br>n’;
}

Metoda nie przyjmuje żadnych argumentów jej jedynym zadaniem jest pobrać numer i tekst ostatniego błędu za pomocą funkcji mysql_errorno() i mysql_error(), oraz wyświetlenie tego na ekranie.
Teraz zajmijmy się połączeniem z baza posłuży nam do tego metoda connect(), zobaczmy źródło

function connect($host, $user, $password, $database, $persistent=FALSE) {
$this->connection = ($persistent==TRUE) ? mysql_pconnect($host, $user, $password) : mysql_connect($host, $user, $password);
if($this->connection && $database != „”) {
$this->database = mysql_select_db($database, $this->connection);
if($this->database) {
return TRUE;
} else {
$this->error();
mysql_close($this->connection);
return FALSE;
}
} else {
$this->error();
return FALSE;
}
}

Za pomocą operatora trój argumentowego sprawdzamy, jakie połączenie należy wykonać, stale czy zwykle jest to oczywiście uzależnione od wartości $persistent. Jeżeli udało się nam połączyć to wybieramy bazę danych w przeciwny wypadku wywołujemy wcześniej zdefiniowaną metodę, $this->error() która pokaże nam wszystkie informacje o uzyskanym błędzie, podobnie w przypadku gdy PHP nie może wybrać bazy danych, tylko że zamykamy też wcześniej utworzone połączenie.

Kolejną potrzebną funkcja jest close(), czyli jak nie trudno się domyślić zamykanie połączenia z baza danych.

function close() {
if($this->connection) {
if($this->result) mysql_free_result($this->result);
mysql_close($this->connection);
unset($this->query);
unset($this->result);
unset($this->database);
unset($this->connection);
return TRUE;
} else $this->error();
}

Oprócz zamykania połączenia i zwalniania rezultatu zapytania nasza funkcja zwalnia również wszystkie zasoby, których używaliśmy, służy do tego funkcja unset();

Teraz przejdźmy do najważniejszej metody, czyli query() jest ona odpowiedzialna za wysłanie pytania i odebranie wyniku, zobaczmy kod.

function query($query) {
if($query!=”” && $this->database) {
$this->query = $query;
if($this->result) mysql_free_result($this->result);
if($this->result = mysql_query($this->query, $this->connection)) {
$this->lastId = mysql_insert_id();
$this->queries++;
return $this->result;
} else {
$this->error();
}
} else $this->error();
}

Zasada działania funkcji jest prosta, najpierw przypisujemy $this->query wartość $query, jeżeli do zmiennej $this->result jest już przypisana jakiś wynik zapytania to zwalniamy go, następnie wysyłamy zapytanie mysql_query() jeśli wszystko jest w porządku to zwiększamy ilość zadanych pytań o jeden, pobieramy wartość ostatniego id (przydaje się podczas dodawania nowych rekordów do bazy), i zwracamy rezultat (return $this->result) w przypadku jakiegokolwiek błędu wywołujemy $this->error() i wyświetlamy błąd, służą do tego dwie ostatnie instrukcje else które wyłapują wszystkie błędy.

Możemy już łączyć się z bazą, wysyłać zapytania oraz przechwytywać błędy, pora aby nasza klasa „nauczyła” się odbierać wyniki zapytania, posłużą nam do tego dwie metody, fetchArray() i fetchRow(), na początek zajmiemy się pierwszą z nich.

function fetchArray($resultHandle=0) {
$this->result = ($resultHandle==0) ? $this->result : $resultHandle;
if($this->database && $this->result) {
$this->records = mysql_fetch_array($this->result, MYSQL_ASSOC);
if(is_array($this->records)) return $this->records;
else $this->error();
} else $this->error();
}

Jak to działa? Funkcja pobiera jeden argument jest on opcjonalny przyda się jedynie w przypadku zapętlonych pytań do bazy, na samym początku sprawdzamy czy jest on ustawion i przypisujemy zmiennej $this->>result odpowiednią wartość. Kolejnym krokiem jest sprawdzenie czy zdefiniowane są zmienne $this->database i $this->result, jeśli tak to za pomocą funkcji mysql_fetch_array() przypisujemy wynik do zmiennej $this->records, teraz zostaje jeszcze tylko sprawdzić czy $this->records jest tablicą jeśli tak to zwracamy wynik, w przeciwnym wypadku funkcja zwraca stosowny błąd.

Pora na drugą funkcje do odbioru danych, w zasadzie niczym się ona nie różni od poprzedniej więc nie będę opisywał zasady jej działania, pokaże tylko jak wygląda jej źródło.

function fetchRow($resultHandle=0) {
$this->result = ($resultHandle==0) ? $this->result : $resultHandle;
if($this->database) {
$this->records = mysql_fetch_row($this->result, MYSQL_ASSOC);
if($this->records) return $this->records;
else $this->error();
} else $this->error();
}

Zwróć jedynie uwagę na to, że zamiast mysql_fetch_array() użyłem mysql_fetch_row().

Ostatnią metodą która będzie nam potrzebna do rozpoczęcia pracy z własną klasą jest numRows(), wiadomo, że często zachodzi potrzeba sprawdzenia ile rekordów uzyskano w wyniku zapytania, nasza funkcja wygląda tak:

function numRows() {
if($numRows = mysql_num_rows($this->result)) return $numRows;
else $this->error();
}

W zasadzie nie ma co tu opisywać, za pomocą instrukcji if sprawdzamy czy $numRows jest poprawnym wynikiem działania funkcji mysql_num_rows() jeśli tak to zwracamy $numRows w przeciwnym razie wrzucamy błąd i kończymy działanie funkcji.

Nasza klasa jest już gotowa do pracy na koniec pokaże jak z niej korzystać.

//tworzymy nowy obiekt
$sql = new sqlObject;
//laczymy sie z baza
$sql->connect(’localhost’, 'root’, 'password’, 'baza’);
//zadajemy pytanie
$sql->query(„SELECT * FROM tabela”);

//wyswietlamy wyniki
while($row = $sql->fetchArray()) {
echo $row[’config_key’].’:’.$row[’config_value’].'<br>’;
}

//sprawdzamy ilosc wierszy
echo 'ilosc wierszy: ’.$sql->numRows();

//wprowadzamy nowy wpis
$sql->query(„INSERT INTO inna_tabela VALUES(0, 'wpis’, 'koniec’)”);
//sprawdzamy jego id
echo 'ostatnie id: ’.$sql->lastId;
echo ‘ilosc pytan: ‘.$sql->queries;

//zamykamy polaczenie z baza danych
$sql->close();

Jak widać korzystanie z tej klasy jest bardzo wygodne, w ogóle nie trzeba pamiętać o przekazywaniu odpowiednich identyfikatorów co znacznie ułatwia pracę programiście.

Oczywiście można dopisać jeszcze kilka lub kilkanaście metod do tej klasy, albo w ogóle napisać ją od nowa tak aby była bardziej rozbudowana zawierała cachowanie wyników zapytań, obsługę transakcji, ja tylko pokazałem Ci jak teraz sam musisz się zastanowić czego będziesz wymagał od swojego obiektu.

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2004-04-28 2004-04-28
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Informatyzacja szansą
Następny artykuł O typografii na stronach WWW
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?