Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Sterownik bazy danych
Helid
post
Post #1





Grupa: Zarejestrowani
Postów: 280
Pomógł: 20
Dołączył: 12.12.2007
Skąd: 127.0.0.1

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


Napisałem własny sterownik bazy danych (Moja 2 klasa proszę być wyrozumiałym).
  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 gry Night Racers.
  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. public $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.  
  51. }//koniec __construct 
  52.  
  53. /**
  54. Funkcja odpowiada za zapytanie.
  55. **/
  56. public function query ($dbzapytanie) {
  57. $this->zapytanie = '';
  58. $this->zapytanie = @mysql_db_query($this->baza, $dbzapytanie, $this->polaczenie);
  59. if (!$this->zapytanie) {
  60. $this->bledy++;
  61. echo 'Wystąpił bug z zapytaniem. ';
  62. } else {
  63. $this->queries++;
  64. return $this->zapytanie;
  65. }
  66. } //end query
  67.  
  68. /**
  69.  * mostid - zwraca numer ID wygenerowny podczas ostatniej operacji dodowania rekordu
  70. */
  71. private function mostid()
  72. {
  73. return mysql_insert_id($this->polaczenie);
  74. } //end mostid
  75. /**
  76. Automatyczne zamykanie połączenia z mysql
  77. **/
  78. public function __destruct()
  79. {
  80. $zamykanie = @mysql_close($this->polaczenie);
  81. if(!$zamykanie)
  82. {
  83.  echo 'Podczas zamykania połączenia wystąpił błąd';
  84. } //end __destruct
  85. }
  86.  
  87.  private function error($zapytanie = '' )
  88. {
  89. if($zapytanie == '' )
  90. {
  91. echo '<br />Baza danych zwróciła komunikat o błędzie numer <b>' . mysql_errno() . '</b> i zawierającą błąd zapytania - <b><font color="red">' . mysql_error() . '</font></b><br />';
  92. }
  93. else
  94. {
  95. echo '<br />Baza danych zwróciła komunikat o błędzie numer <b>' . mysql_errno() . '</b> i zawierającą błąd zapytania - <b>' . mysql_error() . '</b>.<br />Błąd wystąpił w zapytaniu : <b><font color="red">' . $zapytanie . '</b></font><br />';
  96. }
  97. } //end error();
  98. /**
  99. Pobranie danego rekordu
  100. **/
  101. public function fetcharray($zap)
  102. {
  103. $fetch = @mysql_fetch_array($zap, MYSQL_ASSOC);
  104. if(!$fetch)
  105. {
  106. $this->bledy++;
  107. echo 'Wystąpił błąd';
  108. }
  109. else
  110. {
  111. return $fetch;
  112. }
  113. } //end fetchrow
  114.  
  115. /**
  116. Zlicza ilość rekordów
  117. */
  118. public function NumRows()
  119. {
  120. $zlicz = @mysql_num_rows($this->zapytanie);
  121. if(!$zlicz)
  122. {
  123.  echo 'Wystąpił bug ze zliczaniem wierszy.';
  124. }
  125. else
  126. {
  127. return $zlicz;
  128. }
  129. } //end NumRows
  130.  
  131.  
  132. }
  133. ?>

Przykład użycia:
  1. <?php
  2. /**********************************
  3. Test stweronika db napisanego
  4. przez Helid'a
  5. ***********************************/
  6. include 'sql_drivers/mysql.php';
  7. $db = new db( 'sql.boo.pl' , '%%%', '%%%', '%%%' );// % = moje dane
  8. $objResult = $db->query( 'SELECT * FROM users where login=`helid`' );
  9. while($arrTab = $db->fetcharray($objResult))
  10. {
  11. echo $arrTab['login'];
  12. }
  13. ?>

I wygląda to tak, że wywala bug:
Wystšpił bug z zapytaniem.
Fatal error: Call to a member function fetcharray() on a non-object in /home/accounts_h/helid/public_html/game/ex.php on line 9
Demo na:
http://nightracers.pl/ex.php

Szukałem rozwiązań, ale nie znazłem, co jest źle?

UWAGA ODŚWIEŻYLEM SKRYPT, POPRAWIŁEM 1 BUG.

Ten post edytował Helid 5.03.2008, 20:34:13


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 21.08.2025 - 09:58