Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do obsługi mySQL.
boosik01
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


Witam! Od 5 dni uczę się OOP. Pewnie jak każda osoba która uczy się OOP naukę rozpoczyna przy pisaniu klasy do obsługi mysql.
No więc i tak ja też uczyniłem. Chciałbym byście spojrzeli na moją klasę i postarali się jakoś mi pomóc (co dodać, poprawić etc.)
Chcę napisać jeszcze klasę do zapisywania logów z błędów, i tu pojawia się pytanie czy w OOP zapisywanie do pliku jest normalnie za pomocą funkcji
fwrite() czy też jest jakaś inna funkcja bardziej nadająca się do tego typu operacji.

PS. Pod klasą dałem utworzenie obiektów, bo nie chciało mi się robić już tego w osobnych plikach.
  1. <?php
  2. /**
  3.  * Prosta klasa obsługi bazy danych MySQL
  4.  * Author: boosik01
  5.  * (c) 2011
  6.  */
  7. class mySQL
  8. {
  9. private $sConfig ;
  10.  
  11. public function __construct($sConfig = '')
  12. {
  13. if(!$sConfig)
  14. {
  15. $this->host = $sConfig = 'localhost' ;
  16. $this->user = $sConfig = 'root' ;
  17. $this->pass = $sConfig = '' ;
  18. $this->db = $sConfig = 'test' ;
  19.  
  20. if(!@$this->connect = mysql_connect($this->host, $this->user, $this->pass))
  21. throw new Exception ('Nie można połączyć się z bazą danych! ' . mysql_error() );
  22. if(!@mysql_select_db($this->db))
  23. throw new Exception ('Błąd wyboru bazy danych! ' . mysql_error());
  24. }
  25. else
  26. {
  27. $sConfig == NULL ;
  28. }
  29. }
  30.  
  31. public function __destruct()
  32. {
  33. mysql_close($this->connect) ;
  34. }
  35.  
  36. public function mysql_fetch_array($mysql_query)
  37. {
  38. $this->mysql_query = $mysql_query ;
  39. if(!@$this->mysql_query = mysql_fetch_array(mysql_query($this->mysql_query)))
  40. throw new Exception ('Wystąpił błąd w wyświetlaniu / lub UPTADE danych. ' . mysql_error());
  41. return $this->mysql_query ;
  42.  
  43. }
  44.  
  45. public function query($query)
  46. {
  47. $this->query = $query ;
  48. if(!@$this->query = mysql_query($this->query))
  49. throw new Exception ('Wystąpił błąd w konstrukcji zapytania. ' . mysql_error()) ;
  50. return $this->query ;
  51. }
  52. }
  53.  
  54. try
  55. {
  56. $new = new mySQL() ;
  57. $dane = $new->query("INSERT INTO users SET user='boooooo'") ;
  58. echo $dane['user'] ;
  59. }
  60. catch (Exception $error)
  61. {
  62. echo 'Wystąpił błąd. Administracja została już o tym poinformowana. Przepraszamy za kłopoty.' ;
  63. $sError = '<b>Komunikat</b>: '.$error->getMessage().'<br /><b>Plik</b>: '.$error->getFile().'<br /><b>Wiersz</b>: '.$error->getLine();
  64. }
  65.  


Ten post edytował boosik01 30.05.2011, 18:39:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
boosik01
post
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 1
Dołączył: 19.08.2009

Ostrzeżenie: (10%)
X----


PDO jest klasą samą w subie tak? Więc pisanie klasy do obsługi bazy danych odpada więc to jest + bo mogę się już zabrać od razu za rejestrację etc...

Do tego dobra obsługa wyjątków, brak ataków sql Injection no, no ciekawe (IMG:style_emoticons/default/biggrin.gif)

Ok napisałem klasę do łatwej obsługi PDO (IMG:style_emoticons/default/wink.gif)

  1. <?php
  2.  
  3. class datebase
  4. {
  5. private $sSql ;
  6. private $pdo ;
  7. public function __construct($sSql = NULL)
  8. {
  9. $this->host = $sSql = 'localhost' ; // Host bazy danych.
  10. $this->user = $sSql = 'root' ; // Użytkownik bazy danych.
  11. $this->password = $sSql = '' ; // Hasło do bazy danych.
  12. $this->db = $sSql = 'test' ; // Wybór bazy.
  13. $this->pdo = $pdo = NULL ;
  14. try
  15. {
  16. $this->pdo = new PDO('mysql:host='.$this->host.';dbname='.$this->db.'', $this->user, $this->password);
  17. $this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  18. }
  19. catch(PDOException $e)
  20. {
  21. echo '<b>Kominikat:</b> Połączenie nie mogło zostać utworzone. <br> <b>Info:</b> ' . $e->getMessage() . ' <br> <b>Wiersz:</b> ' . $e->getLine(). ' <br> <b>Plik: </b> ' .$e->getFile() ;
  22. }
  23.  
  24. }
  25.  
  26. public function __destruct()
  27. {
  28. $sSql = NULL ;
  29. }
  30.  
  31. public function select($select)
  32. {
  33. try
  34. {
  35. $this->select = $select ;
  36. $this->select = $this->pdo -> query($this->select);
  37. return $this->select->fetch();
  38.  
  39. $this->select -> closeCursor();
  40. }
  41. catch(PDOException $e)
  42. {
  43. echo '<b>Kominikat:</b> Bład z pobieraniem danych! <br> <b>Info:</b> ' . $e->getMessage() . ' <br> <b>Wiersz:</b> ' . $e->getLine(). ' <br> <b>Plik: </b> ' .$e->getFile() ;
  44. }
  45. }
  46.  
  47. public function update($update)
  48. {
  49. try
  50. {
  51. $this->update = $update ;
  52. return $this-> pdo -> exec($this->update);
  53.  
  54. $this->update -> closeCursor();
  55. }
  56. catch(PDOException $e)
  57. {
  58. echo '<b>Kominikat:</b> Bład z aktualizowaniem rekordu! <br> <b>Info:</b> ' . $e->getMessage() . ' <br> <b>Wiersz:</b> ' . $e->getLine(). ' <br> <b>Plik: </b> ' .$e->getFile() ;
  59. }
  60. }
  61.  
  62. }
  63.  
  64. $new = new datebase() ;
  65.  
  66. $new->update("UPDATE `users` SET `user` = 'asdasss11sssssssd'");
  67.  


Wszystko działa jak należy, chodź pewnie ta klasa i tak jest daleka od ideału i jeśli wgl ta klasa trzyma jakieś standardy (IMG:style_emoticons/default/tongue.gif)
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: 15.10.2025 - 00:56