Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa MySQL
Forum PHP.pl > Forum > PHP > Object-oriented programming
Starmi
Witam.
Mam na imię Tomek, lat mam 15 skończone 11 grudnia.
PHP zajmuje się parę miesięcy a OOP może miesiąc, akurat tym językiem, ponieważ uważam że on jest jak dla mnie najłtawiejszy smile.gif

Napisałem klasę MySQL w celu edukacyjnym, Proszę o ocene.
Krytyka jak najmilej widziana ( Tylko nie do przesady ). smile.gif

  1. <?php error_reporting( E_ALL ^ E_NOTICE );
  2. // +---------------------------------------------------------------------------+
  3. // | Copyright (c) 2012 Starmi |
  4. // +---------------------------------------------------------------------------+
  5. class Db
  6. {
  7. /**
  8. * @var array tablica zawierające dane typu host/user/base/pass itp...
  9. */
  10. var $_params = array();
  11.  
  12. /**
  13. * @var bool Czy klasa jest połączona z bazą danych
  14. */
  15. var $_connect = false;
  16.  
  17. /**
  18. * @var link Uchwyt połaczenia bazy danych
  19. */
  20. var $_connect_link = null;
  21.  
  22. /**
  23. * @var resource_id Uchwyt ostatniego zapytania mysql
  24. */
  25. var $_last_query = null;
  26.  
  27. /**
  28. * Zmienia dane w zmiennej globalnej $_params
  29. *
  30. * @param array|string $name klucz lub tablica
  31. * @param string $value jeśli $name nie jest tablicą to używany tej zmiennej do przypisania wartości
  32. * @return bool zwraca czy dane zostały poprawnie zmienione/dodane do $_params
  33. * @acces public
  34. */
  35. function setParam( $name, $value = null )
  36. {
  37. if( is_null($name) )
  38. {
  39. return false;
  40. }
  41.  
  42. if( is_array($name) )
  43. {
  44. foreach($name as $key => $value)
  45. {
  46. if( empty($key) || empty($value) )
  47. {
  48. continue;
  49. }
  50.  
  51. $this -> _params[ $key ] = $value;
  52.  
  53. }
  54. return true;
  55. }
  56.  
  57. $this -> _params[ $name ] = $value; return true;
  58. }
  59.  
  60. /**
  61. * Funkcja pobiera dane z tablicy globalnej $_params
  62. *
  63. * @param array|string klucz lub tablica zawierająca klucze...
  64. * @return array|string zwraca wyniki
  65. * @acces public
  66. */
  67. function getParam( $param = null )
  68. {
  69. if( is_array($param) )
  70. {
  71. $_return = array();
  72. foreach($param as $param_key)
  73. {
  74. if( isset($this->_params[ $param_key ]) && !is_null($param_key) )
  75. {
  76. $_return[ $param_key ] = $this -> _params[$param_key];
  77. }
  78. else continue;
  79. }
  80. return $_return;
  81. }
  82.  
  83. return $this -> _params[$param];
  84. }
  85.  
  86. /**
  87. * Funkcja odpowiadająca za łączenie z bazą danych
  88. *
  89. * @return bool Zwraca wynik połączenia...
  90. * @acces public
  91. */
  92. function connect()
  93. {
  94. $db = $this -> getParam(array('host', 'user', 'pass', 'base'));
  95.  
  96. if( ($connect_id = @mysql_connect($db['host'], $db['user'], $db['pass']) ) )
  97. {
  98. if( @mysql_select_db($db['base'], $connect_id) )
  99. {
  100. $this -> _connect = true;
  101. $this -> _connect_link = $connect_id;
  102. return true;
  103. }
  104. else
  105. {
  106. $this -> writeError('Nie można wybrać bazy danych...');
  107. }
  108. }
  109. else
  110. {
  111. $this -> writeError('Nie można połączyć się z bazą danych');
  112. }
  113. }
  114.  
  115. /**
  116. * Wypisuje błąd na stronie
  117. *
  118. * @param string $error błąd do wyświetlenia
  119. * @return bool wysyła wartość zwróconą przez trigger_error()
  120. */
  121. function writeError( $error ){
  122. return trigger_error($error, E_USER_ERROR);
  123. }
  124.  
  125. /**
  126. * Wysyła zapytanie do MySQL
  127. *
  128. * @param string $query_string string jaki zostanie wysłany do mysql
  129. * @param bool $fetch czy zwrócić tablice z wynikami ['fetch']
  130. * @param bool $rows czy zwrócić ilość rekordów w bazie danych ['rows']
  131. * @return bool|array false jeśli zapytanie się nie powiedzie, array jeśli tak
  132. * @acces publoc
  133. */
  134. function query( $query_string = null, $fetch = FALSE, $rows = FALSE )
  135. {
  136. if( is_null($query_string) )
  137. {
  138. return false;
  139. }
  140.  
  141. unset( $this -> _last_query );
  142. if( $query = @mysql_query($query_string, $this->_connect_link) )
  143. {
  144. $this -> _last_query = $query;
  145. switch( TRUE )
  146. {
  147. case $fetch:
  148. $_return['fetch'] = mysql_fetch_array( $this -> _last_query );
  149. break;
  150. case $rows:
  151. $_return['rows'] = mysql_num_rows( $this -> _last_query );
  152. break;
  153. }
  154. $_return['handle'] = $this -> _last_query;
  155. return $_return;
  156. }
  157. else
  158. {
  159. $this -> writeError( 'Nie można wykonać zapytania mysql </br>Zapytanie: ' . $query_string );
  160. }
  161. }
  162.  
  163. /**
  164. * Dodaje rekord do bazy danych
  165. *
  166. * Możesz użyć funkcji query, ale po co? ta jest łatwiejsza ! biggrin.gif Nie zwraca żadnej wartości
  167. *
  168. * @param string $table tabela do jakies ma zostać dodany rekord
  169. * @param array $insert_data dane jakie zostaną dodane np: array('kolumna' => 'wartość')
  170. */
  171. function insert( $table, $insert_data )
  172. {
  173. $this -> query( sprintf("INSERT INTO `%s` (`%s`) VALUES(\"%s\")",
  174. $table,
  175. implode('`, `', array_keys($insert_data)),
  176. implode('", "', addslashes(array_values($insert_data))
  177. )));
  178. }
  179.  
  180.  
  181. }
  182.  
  183. /** Przykład użycia... **/
  184. $db = new Db();
  185. $db -> setParam('host', 'localhost');
  186. $db -> setParam('pass', '');
  187. $db -> setParam('user', 'root');
  188. $db -> setParam('base', 'test');
  189. $db -> connect();
  190.  
webdice
PDO.
Daiquiri
Przede wszystkim cross i to nie w tym dziale. Zamykam, kontynuuj w dziale "Oceny".
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.