Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt]klasa do obsługi MYSQL
ziom
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 13.02.2005

Ostrzeżenie: (0%)
-----


Witam!

W dziale 'php' nie chcieli mi powiedzieć co jest nie tak to zakładam, że jest spox i proszę o ocene.
No i niech mi w końcu ktoś powie czy jestem na dobrym tropie, a może wywalić to wszystko w kosmos?(IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)

Klasa napisana w ramach 'sterownika', który ma sprawić, że moja aplikacja nie będzie całkowicie uzależniona od bazy danych.

  1. <?php
  2. class DB 
  3. {
  4. // var $cache_dir
  5. public $cache_dir = ''; //katalog, w którym składowane są cache z danego pliku
  6. // var $bufor
  7. protected $bufor = array();
  8. // var $cache_file
  9. public  $cache_file = 'cache'; //plik cache
  10.  
  11. // var $conn
  12. public $conn;
  13. // var $db
  14. public $db;
  15. // var $result
  16. protected $result;
  17.  
  18. // var $rows
  19.  private  $rows;
  20.  
  21. ////////////////////////////////////////////////////
  22. ////////////////////////////////////////////////////
  23. ////////////////////////////////////////////////////
  24. //funckcja sprawdzająca czy plik cache isnieje
  25. protected function cache_exists($var)
  26. {
  27. if(file_exists($this->cache_dir.$var))
  28. {
  29. return(true);
  30. }
  31. else
  32. {
  33. return(false);
  34. }
  35. }
  36. ////////////////////////////////////////////////////
  37. ////////////////////////////////////////////////////
  38. ////////////////////////////////////////////////////
  39. //konstruktor :)
  40. public function __construct($host, $db_user, $db_pass, $db_name)
  41. {
  42. //sprawdzanie, czy zostały podane wszystkie dane(prucz hasła, które niezawsze jest wymagane)
  43. if(empty($host) OR empty($db_user) OR empty($db_name))
  44. {
  45. print('Nie zostały podane wszystkie parametry połączenia z bazą danych!');
  46. }
  47. else
  48. {
  49. $this -> conn = mysql_connect($host, $db_user,$db_pass) or print(mysql_error());
  50. $this -> db = mysql_select_db($db_name);
  51. }
  52. }
  53. ////////////////////////////////////////////////////
  54. ////////////////////////////////////////////////////
  55. ////////////////////////////////////////////////////
  56. public function __destruct()
  57. {
  58. if(!mysql_close($this -> conn))
  59. {
  60.  print('Nie można zamknąć połączenia!');
  61. }
  62. }
  63. ////////////////////////////////////////////////////
  64. ////////////////////////////////////////////////////
  65. ////////////////////////////////////////////////////
  66. //funkcja pytająca
  67. public function sql_query($query, $mode = '1')
  68. {
  69. //czytać z pliku cache? Jeżeli mode jest różne od 1 to nie
  70. $cache = $mode == 1 ? $this->cache_exists($this->cache_file) : false;
  71. //jeżeli plik cache nie istnieje to wykonaj zapytanie
  72. if(!$cache)
  73. {
  74. if(!empty($query))
  75. {
  76. $this->result = mysql_query($query, $this->conn) or
  77. ($err = mysql_error());
  78. if( $this->result )
  79. {
  80. return( $this->result );
  81. }
  82. else
  83. {
  84. print($err);
  85. }
  86. }
  87. else
  88. {
  89. return(false);
  90. }
  91. }
  92. else
  93. {
  94. return(1);
  95. }
  96. }
  97. ////////////////////////////////////////////////////
  98. ////////////////////////////////////////////////////
  99. ////////////////////////////////////////////////////
  100. //zapytanie do tablicy
  101. public function sql_fetch_array($result, $mode = '1',$typ = '1')//Dostępne wartości pola 'typ' to:1,2,3
  102. {
  103. $typy = array(
  104. '1' => MYSQL_ASSOC,
  105. '2' => MYSQL_NUM,
  106. '3' => MYSQL_BOTH
  107. );
  108. //jeżeli istnieje plik cache to pobierz z niego dane
  109. if(!$this -> cache_exists($this->cache_file))
  110. {
  111. //mode==0 czyli zapisuj do cache
  112. if($mode == '0')
  113. {
  114. while($rows = mysql_fetch_array($result,$typy[$typ]))
  115. {
  116. $this->bufor[] = $rows;
  117. }
  118. if($this->cache_write($this->cache_file))
  119. {
  120. return($this->bufor);
  121. unset($this->bufor);
  122. }
  123. else
  124. {
  125. return(false);
  126. }
  127. }
  128. //mode==1 czyli nie zapisuj do cache
  129. elseif($mode == '1')
  130. {
  131. while($rows = mysql_fetch_array($result,$typy[$typ]))
  132. {
  133. $this->bufor[] = $rows;
  134. }
  135. return($this->bufor);
  136. unset($this->bufor);
  137. }
  138. }
  139. else
  140. {
  141. $this->bufor = unserialize(file_get_contents($this->cache_dir.$this->cache_file));
  142. return($this->bufor);
  143. unset($this->bufor);
  144. }
  145. }
  146. ////////////////////////////////////////////////////
  147. ////////////////////////////////////////////////////
  148. ////////////////////////////////////////////////////
  149. //zapisuje do pliku cache
  150. protected function cache_write()
  151. {
  152. //jeżeli plik cache istnieje, zapisz, jeżeli nie zwróć false
  153. if(!$this -> cache_exists($this->cache_file))
  154. {
  155. if(file_put_contents($this->cache_dir.$this->cache_file, serialize($this->bufor)))
  156. {
  157. return(true);
  158. }
  159. else
  160. {
  161. return(false);
  162. }
  163. }
  164. }
  165. ////////////////////////////////////////////////////
  166. ////////////////////////////////////////////////////
  167. ////////////////////////////////////////////////////
  168. //usuwa cache
  169. public function delete_cache()
  170. {
  171. //jeżeli plik cache istnieje, usuń, jeżeli nie to zwróć false
  172. if($this -> cache_exists($this->cache_file))
  173. {
  174. if(unlink($this->cache_dir.$this->cache_file))
  175. {
  176. return(true);
  177. }
  178. }
  179. else
  180. {
  181. return(false);
  182. }
  183. }
  184. ////////////////////////////////////////////////////
  185. ////////////////////////////////////////////////////
  186. ////////////////////////////////////////////////////
  187. //pierwszy record
  188. public function get_first_record($query)
  189. {
  190. $record = $this->sql_fetch_array($query,1,2);
  191. return $record[0][0];
  192. }
  193. ////////////////////////////////////////////////////
  194. ////////////////////////////////////////////////////
  195. ////////////////////////////////////////////////////
  196. //pierwszy wiersz
  197. public function get_first_row($query)
  198. {
  199. $row = $this->sql_fetch_array($query,1,3);
  200. return $row[0];
  201. }
  202. ////////////////////////////////////////////////////
  203. ////////////////////////////////////////////////////
  204. ////////////////////////////////////////////////////
  205. //ostatni rekord
  206. public function get_last_record($query)
  207. {
  208. $record = $this->sql_fetch_array($query,1,2);
  209. $rows = count($record)-1;
  210. $col = count($record[0])-1;
  211. return $record[$rows][$col];
  212. }
  213. ////////////////////////////////////////////////////
  214. ////////////////////////////////////////////////////
  215. ////////////////////////////////////////////////////
  216. //ostatni wiersz
  217. public function get_last_row($query)
  218. {
  219. $record = $this->sql_fetch_array($query,1,3);
  220. $row = count($record)-1;
  221. return $record[$row];
  222. }
  223. ////////////////////////////////////////////////////
  224. ////////////////////////////////////////////////////
  225. ////////////////////////////////////////////////////
  226. //transakcje
  227. public function Transaction ($var) 
  228. {
  229. $mode = strtolower($var);
  230. $array = array(
  231. 'fail' => 'ROLLBACK',
  232. 'complete' => 'COMMIT',
  233. 'start' => 'BEGIN'
  234. );
  235.  
  236. mysql_query($array[$mode]) or print(mysql_error());
  237. }
  238. ////////////////////////////////////////////////////
  239. ////////////////////////////////////////////////////
  240. ////////////////////////////////////////////////////
  241. //ilość wierszy
  242. public function num_rows($query)
  243. {
  244. if(!$this->cache_exists($this->cache_file))
  245. {
  246. return mysql_num_rows($query);
  247. }
  248. else
  249. {
  250. $rows = unserialize(file_get_contents($this->cache_dir.$this->cache_file));
  251. return count($rows);
  252. }
  253. }
  254. ////////////////////////////////////////////////////
  255. ////////////////////////////////////////////////////
  256. ////////////////////////////////////////////////////
  257. //ilość 'dotkniętych' wierszy
  258. public function affected_rows()
  259. {
  260. }
  261. }
  262. ?>

Edit: Klasy zapomniałem dodać (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował ziom 9.03.2006, 22:18:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bastion
post
Post #2





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


na szczescie w php 5 mysql_pconnect zostala usunieta, to prawda ze czas na ustanowienie polaczenia jest nizszy ale moze powodowac tragiczne skutki na witrynach o duzym ruchu (poprzez nawiazywanie polaczen stalych) i w efekcie doprowadzic do blokady dostepu do bazy danych
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 22:32