login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Database tools > Database class

Database class

Auteur: Wim - 26 februari 2005 - 14:01 - Gekeurd door: Joel - Hits: 7222 - Aantal punten: 3.00 (5 stemmen)



Hallo iedereen,

Dit is een simpele database classe met uitleg etc. Ik heb hier wel ff rechtstreeks het txt bestandje (database.class.txt) heen gecopiert (met de uitleg in) en in het code vak staat database.class.php. Het moet online komen (downloadbaar), maar mijn site is momenteel onder constructie (mizone.be), en is dus enkel op mijn webserver (thuis):


---------------------------------------------------

Benodigdheden:
- Een webserver met PHP en MySQL ondersteuning.
- Minimum 1 MySQL database. (Heeft u er geen? http://www.freesql.org/)
- Een gebruikersnaam op de MySQL server.

---------------------------------------------------



---------------------------------------------------

Inhoud classe:
- Database connectie maken.
- Database connectie (opnieuw) maken; m.a.w. meerdere hosts mogelijk
- Andere database selecteren
- Query's uitvoeren
- mysql_fetch_object, mysql_fetch_array en mysql_fetch_assoc uitvoeren
- mysql_num_rows uitvoeren
- Custom error's
- Custom error's in/uit schakelen
- Tellen van: mysql_query; mysql_fetch_object; mysql_fetch_array; mysql_fetch_assoc
- Table prefix gebruiken
- Table prefix aanpassen/verwijderen
- Table prefix aan te roepen met [prefix] in de mysql table
- Tijd in microseconde weergeven van query's die uitgevoerd werden
- Resultaten van tellingen weergeven, elk moment
- MySQL verbinding beïndigen
- ...

---------------------------------------------------



---------------------------------------------------

Uitleg (functie per functie):
----------------------------------

database
--------
Dit is een constructor. Deze wordt uitgevoerd bij het openen van de classe. De functie database maakt ook connectie met de database


reconnect $db->reconnect($host, $user, $passwd);
---------
Opnieuw connecteren, of connecteren naar een andere host


reselect_db $db->reselect_db($database);
-----------
Een andere database selecteren.


set_prefix $db->set_prefix($prefix);
----------
De prefix van de table's (opnieuw) defineren. Aan te roepen met [prefix] in de query ($db->query($query))


unset_prefix $db->unset_prefix();
------------
Dit maakt van de prefix '' (maakt hem dus leeg). Hetzelfde effect als $db->set_prefix("");


set_customError $db->set_customError();
---------------
Zet custom error's aan.


unset_customError $db->unset_customError();
-----------------
Schakelt custom error's terug uit


set_customErrorMSG $db->set_customErrorMSG($msg);
------------------
Stel een custom error bericht in.


query $db->query($query);
-----
Dit voert een Query in mysql_query($query); uit. [prefix] zal (automatisch) vervangen worden door de door u ingestelde prefix.
Overigens wordt de tijd berekent + geteld hoeveel query's er uitgevoerd worden.


num_rows $db->num_rows($query);
--------
mysql_num_rows + telling


fetch_object $db->fetch_object($query);
------------
mysql_fetch_object + telling


fetch_array $db->fetch_array($query);
-----------
mysql_fetch_array + telling


fetch_assoc $db->fetch_assoc($query);
-----------
mysql_fetch_assoc + telling


results $db->results($parameter);
-------
Geeft resultaten van tellingen weer. Mogelijke parameters + beschrijving:

querys Het aantal query's die uitgevoerd zijn
fetchs Het aantal fetch_* die uitgevoerd zijn
numrows Het aantal num_rows die uitgevoerd zijn
time Het aantal microseconden dat het geduurt heeft voor de query's berekent zijn
sqltime De volledige tijd van alle: query's; fetchs; numrows


close $db->close();
-----
mysql_close();


reset_counters $db->reset_counters();
-----------------
Reset alle tellertjes (tijd + query's + ...)

---------------------------------------------------


Ok, ik weet dat ik IETS vergeten ben, maar weet niet wat. Ik edit het script wel, bedankt voor uw begrip!

Greetz,
Wim Mariën

EDIT:
- Script inorde gemaakt. Dus geen verbinding en connection door elkaar

Code:
database.class.php
  1. <?php
  2. class database {
  3.  
  4. var $prefix;
  5. var $tijd;
  6. var $sqltijd;
  7. var $connection;
  8. var $querys = 0;
  9. var $fetchs = 0;
  10. var $numrows = 0;
  11. var $customError = false;
  12. var $customErrorMSG = "Er is een database fout. Gelieve later nog eens te proberen!";
  13.  
  14. function database($host = "", $gebruiker = "", $wachtwoord = "", $database = "", $prefix = "") {
  15. $this->connection = mysql_connect($host, $gebruiker, $wachtwoord)or die($this->__error(mysql_error()));
  16. $this->prefix = $prefix;
  17. mysql_select_db($database, $this->connection)or die($this->__error(mysql_error()));
  18. }
  19.  
  20. function reconnect($host, $user, $pass) {
  21. $this->connection = mysql_connect($host, $user, $pass) OR die($this->__error(mysql_error()));
  22. if(!$this->connection)
  23. die($this->__error(mysql_error()));
  24. }
  25.  
  26. function reselect_db($db){
  27. mysql_select_db($db, $this->currentDB) OR die($this->__error(mysql_error()));
  28. }
  29.  
  30. function set_prefix ($prefix) {
  31. $this->prefix = $prefix;
  32. }
  33.  
  34. function unset_prefix () {
  35. $this->prefix = NULL;
  36. }
  37.  
  38. function set_customError (){
  39. $this->customError = true; // set true of false
  40. }
  41.  
  42. function unset_customError(){
  43. $this->customError = false;
  44. }
  45.  
  46. function set_customErrorMSG ($msg=""){
  47. $this->customErrorMSG = $msg;
  48. }
  49.  
  50. function query($query) {
  51. $microtime_start = $this->__getmicrotime();
  52. $query = preg_replace("/\[prefix\]/si", $this->prefix, $query);
  53. $return = mysql_query($query)or die($this->__error(mysql_error()));
  54. $microtime = $this->__getmicrotime() - $microtime_start;
  55. $this->tijd += $microtime;
  56. $this->sqltijd += $microtime;
  57. $this->querys ++;
  58. return $return;
  59. }
  60.  
  61. function num_rows($query) {
  62. $microtime_start = $this->__getmicrotime();
  63. $return = mysql_num_rows($query);
  64. $this->sqltijd += $this->__getmicrotime() - $microtime_start;
  65. $this->numrows++;
  66. return $return;
  67. }
  68.  
  69. function fetch_assoc($query) {
  70. $microtime_start = $this->__getmicrotime();
  71. $return = mysql_fetch_assoc($query);
  72. $this->sqltijd += $this->__getmicrotime() - $microtime_start;
  73. $this->fetchs++;
  74. return $return;
  75. }
  76.  
  77. function fetch_object($query) {
  78. $microtime_start = $this->__getmicrotime();
  79. $return = mysql_fetch_object($query);
  80. $this->sqltijd += $this->__getmicrotime() - $microtime_start;
  81. $this->fetchs++;
  82. return $return;
  83. }
  84.  
  85. function fetch_array($query) {
  86. $microtime_start = $this->__getmicrotime();
  87. $return = mysql_fetch_array($query);
  88. $this->sqltijd += $this->__getmicrotime() - $microtime_start;
  89. $this->fetchs++;
  90. return $return;
  91. }
  92.  
  93. function __getmicrotime() {
  94. $microtime = explode(" ", microtime());
  95. return $microtime[0] + $microtime[1];
  96. }
  97.  
  98. function results ($release="") {
  99. switch ($release) {
  100. case "querys": $toRelease = $this->querys; break;
  101. case "fetchs": $toRelease = $this->fetchs; break;
  102. case "numrows": $toRelease = $this->numrows; break;
  103. case "time": $toRelease = $this->tijd; break;
  104. case "sqltijd": $toRelease = $this->sqltijd; break;
  105. default: $toRelease = NULL; break;
  106. }
  107.  
  108. return $toRelease;
  109. }
  110.  
  111. function reset_counters () {
  112. $this->sqltijd = NULL;
  113. $this->tijd = NULL;
  114. $this->querys = NULL;
  115. $this->sqltijd = NULL;
  116. $this->fetchs = NULL;
  117. $this->numrows = NULL;
  118. }
  119.  
  120. function __error ($error="") {
  121. if($customError)
  122. $error = $customErrorMSG;
  123.  
  124. return $error
  125. }
  126.  
  127. function close () {
  128. @mysql_close($this->connection);
  129. }
  130. }
  131. ?>


toevoegen aan config.php:
  1. <?php
  2. require ("database.class.php");
  3. $db = new database ("host", "user", "wachtwoord", "database", "prefix");
  4. // de dingen hierboven moet je vervangen door je eigen gegevens. De velden zijn NIET verplicht!
  5. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (13)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.04s