Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sterownik Bazy danych, Klasa, PHP 5
mike
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Prezętuję Wam sterownik bazy danych, w związku z tym że kodu jest sporo więc zamieściłem go tutaj:
DB.class.php <- klasa główna
Result.class.php <- klasa będąca wynikiem zapytania
ResultCached.class.php <- klasa będąca wynikiem zapytania cache'owanego
A oto przykład zastosowania:
  1. <?php
  2. include_once( 'ResultCached.class.php' );
  3. include_once( 'Result.class.php' );
  4. include_once( 'DB.class.php' );
  5.  
  6. $objDB = DB::GetInstance( 'localhost' , 'root', 'pass', 'test' );
  7. $objResult = $objDB->Query( 'SELECT * FROM users' );
  8. $objResult2 = $objDB->QueryCached( 'pass', 'SELECT * FROM news' );
  9.  
  10. while( $arrTab = $objResult->FetchRow() )
  11. {
  12. echo $arrTab[ 'user_name' ] . '<br>';
  13. }
  14.  
  15. while( $arrTab = $objResult2->FetchRow() )
  16. {
  17. echo $arrTab[ 'news_title' ] . '<br>';
  18. }
  19.  
  20. echo 'Czas wszystkich zapytań: ' . $objDB->GetExecutionTime() . '<br>';
  21. echo 'Ilość wszystkich zapytań bo bazy: ' . $objDB->GetQueryCnt() . '<br>';
  22. ?>


Proszę o komentarze, sugestie i krytykę. ;-)

Ten post edytował mike_mech 10.04.2005, 12:16:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Sterownik zmieniony. Zmian niewiele ale są. Oto one:

1. Konstruktor klasy DB został zmieniony na:
  1. <?php
  2. /**
  3.  * Konstruktor klasy
  4.  * @access private dostęp do klasy poprzez metodę GetInstance
  5.  */
  6. private private function __construct()
  7.  {
  8.  }
  9. ?>


2. Doszła nowa metoda w klasie DB opowiedzialna za połączenie z bazą:
  1. <?php
  2. /**
  3.  * Funfcja odpowiadająca za połączenie z bazą
  4.  * @param string $strDBHost nazwa serwera
  5.  * @param string $strDBUser nazwa użytkownika
  6.  * @param string $strDBPass hasło dla użytkownika
  7.  * @param string $strDBName nazwa bazy danych
  8.  * @return bool true w przypadku udanego nawiązania z bazą
  9.  */
  10. public function Connect( $strDBHost, $strDBUser, $strDBPass, $strDBName )
  11. {
  12. if( !$this->boolConnected )
  13. {
  14. $this->resConnectID = @mysql_connect( $strDBHost, $strDBUser, $strDBPass );
  15. if( $this->resConnectID )
  16. {
  17. $resDBSelect = @mysql_select_db( $strDBName , $this->resConnectID );
  18. if( !$resDBSelect )
  19. {
  20. mysql_close( $this->resConnectID );
  21. $this->Error();
  22. }
  23. else
  24. {
  25. $this->strDBName = $strDBName;
  26. $this->boolConnected = true;
  27. return true;
  28. }
  29. }
  30. else
  31. {
  32. $this->Error();
  33. }
  34. }
  35. }
  36. ?>


3. Doszło nawe pole w klasie DB:
  1. <?php
  2. /**
  3.  * Stan sterownika true-połączony z bazą, false-nie połączony z bazę
  4.  * @access private
  5.  * @var boolean
  6.  */
  7. private $boolConnected = false;
  8. ?>


4. Metody FetchRow w klasach Result i ResultCached dostały parametr:
  1. <?php
  2. /**
  3.  * Zwraca tablicę utworzon? z wyniku zapytania
  4.  * @access public
  5.  * @param integer $intResultType stała php określająca typ tablicy jaki ma być z
  6. rócony
  7.  * @return array|false zwraca wiersz z zapytania w postaci tablicy lub false w p
  8. zypadku błędu
  9.  */
  10. public function FetchRow( $intResultType = MYSQL_BOTH )
  11. {
  12. // bez zmian ( prawie )
  13. }
  14. ?>

A oto nowy przykład zastosowania:
  1. <?php
  2. include_once( 'ResultCached.class.php' );
  3. include_once( 'Result.class.php' );
  4. include_once( 'DB.class.php' );
  5.  
  6. $objDB = DB::GetInstance();
  7. $objDB->Connect( 'localhost' , 'root', 'pass', 'test' );
  8. $objResult = $objDB->Query( 'SELECT * FROM users' );
  9. $objResult2 = $objDB->QueryCached( 'pass', 'SELECT * FROM news' );
  10.  
  11. while( $arrTab = $objResult->FetchRow() )
  12. {
  13. echo $arrTab[ 'user_name' ] . '<br>';
  14. }
  15.  
  16. while( $arrTab = $objResult2->FetchRow() )
  17. {
  18. echo $arrTab[ 'news_title' ] . '<br>';
  19. }
  20.  
  21. echo 'Czas wszystkich zapytań: ' . $objDB->GetExecutionTime() . '<br>';
  22. echo 'Ilość wszystkich zapytań bo bazy: ' . $objDB->GetQueryCnt() . '<br>';
  23. ?>


Żródła tam gdzie poprzednio.
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: 13.10.2025 - 17:38