Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sterownik bazy danych
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Helid
Witam...
Z pomocą kolegów z forum, którzy pomogli mi pokonać napotkane błedy storzyłem swoją klasę mysql.
Zapraszam do Testowania. (Licencja GPL - Nie usuwać komentarzy)
Wersja: 0.1
Cała klasa:
  1. <?php
  2. /**************************************
  3. Klasa do obsługi mysql, stworzona
  4. przez Helid'a
  5. email: matinowakma@gmail.com
  6. Wszystkie prawa zastrzeżone.
  7. Licencja dla użytkowników forum: <a href=\"http://forum.php.pl\" target=\"_blank\">http://forum.php.pl</a>.
  8. ***************************************/
  9. class db 
  10. {
  11. /**
  12. Połączenie mysql
  13. **/
  14. private $polaczenie = '';
  15. /**
  16. Baza danych
  17. **/ 
  18. private $baza = ''; 
  19. /**
  20. Indyfikator zapytania
  21. **/
  22. private $zapytanie = '';
  23. /**
  24. Ilość zapytań
  25. **/
  26. private $queries = '0';
  27. /**
  28. Ilość wystąpinoych błędów w zapytaniach
  29. **/
  30. private $bledy = '0';
  31. /**
  32. Konstruktor klasy 
  33. Odpowiadajacy za połączenie
  34. **/
  35. public function __construct($dbhost, $dbuser, $dbpass, $db)
  36. {
  37.  $this->polaczenie = @mysql_connect($dbhost, $dbuser, $dbpass);
  38. if($this->polaczenie)
  39. {
  40.  $this->baza = @mysql_select_db($db , $this->polaczenie);
  41. if(!$this->baza)
  42. {
  43. echo 'Wystąpił bug z wyborem bazy danych';
  44. mysql_close($this->polaczenie);
  45.  exit();
  46. }
  47.  } else {
  48.  echo 'Wsytąpił bug z połaczeniem mysql';
  49.  }
  50. }//koniec __construct 
  51.  
  52. /**
  53. Funkcja odpowiada za zapytanie.
  54. **/
  55. public function query ($dbzapytanie) {
  56. $this->zapytanie = '';
  57. $this->zapytanie = @mysql_query($dbzapytanie);
  58. if (!$this->zapytanie) {
  59. $this->bledy++;
  60. } else {
  61. $this->queries++;
  62. return $this->zapytanie;
  63. }
  64. } //end query
  65.  
  66.  
  67. /**
  68. Automatyczne zamykanie połączenia z mysql
  69. **/
  70. public function __destruct()
  71. {
  72. $zamykanie = @mysql_close($this->polaczenie);
  73. if(!$zamykanie)
  74. {
  75.  echo 'Podczas zamykania połączenia wystąpił błąd';
  76. } //end __destruct
  77. }
  78. /**
  79. Pobranie danego rekordu
  80. **//*
  81. public function fetcharray($zap)
  82. {
  83. $fetch = @mysql_fetch_assoc($zap, MYSQL_ASSOC);
  84. if(!$fetch)
  85. {
  86. $this->bledy++;
  87. echo 'Wystąpił błąd z feth arry';
  88. exit();
  89. }
  90. else
  91. {
  92. return $fetch;
  93. }
  94. } //end fetchrow
  95. */
  96. public function fetcharray($query)
  97. {
  98. $fetch = mysql_fetch_assoc($query);
  99. if(!$fetch)
  100. {
  101. $this->bledy++;
  102. } else {
  103. return $fetch;
  104. } //end if(!$fetch)
  105. } //end fetchrow
  106. /**
  107. Zlicza ilość rekordów
  108. */
  109. public function licz($query)
  110. {
  111. $zlicz = mysql_num_rows($query);
  112. if(!$zlicz)
  113. {
  114.  echo 'Wystąpił bug ze zliczaniem wierszy.';
  115. }
  116. else
  117. {
  118. return $zlicz;
  119. }
  120. } //end NumRows
  121. /**
  122. Funkcja zwraca
  123. ilość wykonanych
  124. zapytań do bazy
  125. **/ 
  126. public function zapytan() 
  127. {
  128. if(!$this->queries){
  129. return '0';
  130. } else {
  131. return $this->queries;
  132. }
  133. }
  134. /**
  135. Funkcja zwraca
  136. ilość napotkanych
  137. błędów
  138. **/ 
  139.  public function bugs() 
  140. {
  141. if(!$this->bledy){
  142. return '0';
  143. } else {
  144. return $this->bledy;
  145. }
  146. }
  147. }
  148. ?>

Przykład użycia:
  1. <?php
  2. /**********************************
  3. Test stweronika db napisanego
  4. przez Helid'a
  5. ***********************************/
  6. include_once 'sql_drivers/mysql.php'; //Otwieranie klasy
  7. $db = new db( 'host' , 'user', 'hasło', 'baza' ); //Połączenie mysq;
  8. $zap = $db->query('SELECT `login` FROM users'); //Przykładowe zapytanie
  9. while($arr = $db->fetcharray($zap)) //Pętla pobierająca rekordy
  10. {
  11. echo $arr['login'].'<br>'; //Wyświetlanie
  12. }
  13. $graczy_zapytanie = $db->query('SELECT `id` FROM users'); //Zapytanie
  14. $graczy = $db->licz($graczy_zapytanie); //Liczenie liczby rekordów
  15. echo 'W NightRacers mamy: '.$graczy.' graczy.<br>'; //Pokazywanie danych
  16. echo 'Wykonano '.$db->zapytan().' zapytań do bazy danych.<br>'; //Ilość zapytań
  17. echo 'Napotkano '.$db->bugs().' błędów.<br>'; //Ilość napotkanych błędów
  18. ?>
bim2
Chyba nie zrozumiałeś koncepcji pisania Sterownika Bazy Danych.

1. Fetcharray powinien już zwrócić nam gotową tablicę.
2. Jakieś filtrowanie danych wejściowych?
3. Nie widzę INSERT / UPDATE

smile.gif i np użycie
$aTablica = $oDb->getAll("SELECT * FROM tablica");
a jak chcesz pobrać jeden rekord to żeby zwróciło jednowymiarową tablicę tego rekordu.
$aJeden = $oDb->getRow("SELECT * FROM tablica WHERE id=1");
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.