GUte MySQL Klasse gesucht

Gute Sammlung, habe adodb gefunden. Das war mir bis dato noch ganz neu, bietet jedoch extrem viele FUnktionen, also auch Sachen wie move, pager etc.
Finde ich nicht schlecht das Ding :D

Hat jemand Erfahrungen damit?
 
Packages manuell zu installieren ist nicht empfohlen, aber viele haben immer wieder Probleme mit der automatischen Installation, besonders wenn es sich um die Installation bei Web-Hoster handelt.

Würde gehen, aber was spricht gegen adodb?
 
Hallo.
Ich hatte da mal auf meiner alten Website ein schönes Tutorial/Codeschnipsel. Könnte dir helfen:

Klasse (class_db.php):

PHP:
      <?php
      /*
      * Datenbankklasse
      * Diese Mysql Klasse vereinfacht den Zugriff auf eine Datenbank
      * Nach einbinden der Klasse ist es mit 3 Zeilen möglich eine
      * Abfrage auszuführen
      */
      class db1 {
      	########## Attribute ##########
      	var $Server = "localhost"; 		// Mysql Host
 	var $User = "user";			// Mysql Benutzer
 	var $Pass = "pw";			// Mysql Passwort
      	var $DBank = "db";	// Mysql Datenbank
      	
 	var $erg;	 		 	//Ergbnismenge
 	var $anz;	 		 	//Datensätze
 	var $ID;	 		 	//ID eines neu eingefügten Datensatzes
 	var $affectedrows; 			//Anzal der betroffenen Datensätze
 	var $fehler;	 			//letzte Fehlermedung von MySQL
      	####### Attribute ende ########
      	
      	######## Konstruktor ##########
      	function db1() {
      		// Mit dem Server Verbinden // 
      		$this->verbinden();
      		// Datenbank auswählen //
      		$select = mysql_select_db($this->DBank,$this->conn);
      	}
      	###### Konstruktor ende #######
      
      	### Methode für die Abfrage ###
      	function db_sql($sql,$debug=0) {
      		// Anfragen zählen //
      		static $DBcount;
      		$this->dbcount=++$DBcount;
      		
      		//  Werte auslesen //
      		$this->erg=@mysql_query($sql, $this->conn);
      		$this->anz=@mysql_num_rows($this->erg);
      		$this->ID=@mysql_insert_id();
      		$this->affectedrows=@mysql_affected_rows();
      		
      		// Debug modus : ausgabe des sql codes //
      		if($debug==1){ echo "<br>".$sql."<br>"; }
      		
      		// Elemente in array Schreiben //
      		if($this->anz > 0) {
      			for($i=0; $i<$this->anz; $i++){
 				$back[$i]=mysql_fetch_array($this->erg);
      			}
      		}
      		// Fehlermeldung abfangen und evt. Ausgeben //
      		elseif(!$this->erg) {
      			$this->fehler=mysql_error();
 			if($debug==1){ echo "<br>".$this->fehler."<br>"; }
      			
      			return FALSE;
      		}
      		// Keine Elemente //
      		elseif($this->anz==0) {
      			return FALSE;
      		}
      		else{ return TRUE; }
      		return $back;
      	}
      	######### Ende Methode ########
      	
      	#### Methode zum Verbinden ###
      	function verbinden() {
      		// Evt. Verbindung wieder holen //
      		static $conn;
      		// Wenn keine Verbindung vorhanden neu verbinden //
 		if(!$conn){$conn = mysql_connect($this->Server,$this->User,$this->Pass);}
      		// Verbindung speichern //
      		$this->conn=&$conn;
      	}
      	######### Ende Methode ########
      
      }//Ende klasse
      ?>

Erklärung:
PHP:
      class db1 {
      			######### Variablen ##########
 			var $Server = "localhost"; 				 // Mysql Host
 			var $User = "user";					 // Mysql Benutzer
 			var $Pass = "pw";				 // Mysql Passwort
 			var $DBank = "db";		 // Mysql Datenbank		 
   
 			var $erg;																	 //Ergbnismenge
 			var $anz;																	 //Datensätze
 			var $ID;																	 //ID eines neu eingefügten Datensatzes
 			var $affectedrows;										 //Anzal der betroffenen Datensätze
 			var $fehler;													 //letzte Fehlermedung von MySQL
      			####### Variablen ende ########

Mit class db1 { wird angezeigt, dass eine Klassendefinition erfolgt. Anschließend werden die Attribute/Variablen der Klasse definiert; Für die Verwendung müssen diese Angaben geändert werden. Der zweite Block der Variablen wird nicht vorbelegt, sondern durch Die Funktionen / Methoden der Klasse gesetzt werden.
PHP:
           			######## Konstruktor ##########
   			function db1() {
 					 // Mit dem Server Verbinden //
 					 $this->verbinden();
  
 					 // Datenbank auswählen //
 					 $select = mysql_select_db($this->DBank,$this->conn);
   			}
   			###### Konstruktor ende #######

Diese Funktion ist der Konstruktor der Klasse, da die Funktion den gleichen Namen wie die Klasse trägt. Er wird automatisch beim Erstellen eines neuen Objekts aufgerufen.


In dieser Funktion wird die Funktionverbinden() dieser Klasse aufgerufen. Wie der Name der Funktion vermuten lässt wird in dieser Funktion die Verbindung der Datenbank erstellt. Dazu erfahren Sie weiter unten mehr. Anschließend wird die zu verwendete Datenbank ausgewählt.


In der Funktion db_sql() wird der übergebene SQL-String an die Datenbank gesendet und – je nach Ergebnis der Anfrage – werden die Ergebnisse als Array zurückgegeben oder, wenn kein Ergebnis vorliegt, false. In jedem Fall werden weitere Informationen als Attribute der Klasse gesetzt, z.B. wird bei INSERT der Autozählerwert in $this->ID geschrieben. Der zweite Parameter $debug wird genutzt, um im Testbetrieb den MySQL-Fehler und den SQL-String auszugeben

PHP:
               			### Methode für die Abfrage ###
   			function db_sql($sql,$debug=0) {
 					 // Anfragen zählen //
 					 static $DBcount;
 					 $this->dbcount=++$DBcount;					 
  
 					 // Werte auslesen //
 					 $this->erg=@mysql_query($sql, $this->conn);
 					 $this->anz=@mysql_num_rows($this->erg);
 					 $this->ID=@mysql_insert_id();
 					 $this->affectedrows=@mysql_affected_rows();					 
  
 					 // Debug modus : ausgabe des sql codes //
 					 if($debug==1){ echo "<br>".$sql."<br>"; }


Zunächst wird eine Variable der Funktion als static deklariert. Dies bedeutet, dass der Wert dieser Variable auch wenn das Objekt gelöscht oder die Funktion beendet wird, von PHP im >>Hinterkopf<< behalten wird, und beim nächsten Aufruf der Funktion noch bekannt ist. In diesem Fall wird diese >>Statische Variable<< dazu benutzt, um die Anfragen der Datenbank zu zählen, sodass Sie einen Überblick darüber behalten wie sehr Ihre Website die Datenbank belastet.


Anschließend wird der in $sql vorliegende SQL-String mit an die Datenbank geschickt. Die Ergebniskennung ist $this->erg. Alle Nützlichen Informationen über diese Anfrage werden den Attributen der Klasse zurückgewiesen; dabei wird in Kauf genommen, dass einige je nach SQL-Anfrage keine Werte annehmen, z.B. wird ein SELECT-Statement keine Rückgabe bei mysql_insert_id() ergeben. Da beim Erstellen der Klasse nicht bekannt ist, welche Werte später Sinn machen (wir wissen nicht, welches SQL-Statement übermittelt wird), ermitteln wir alle, um im Zweifelsfall auf die benötigten Informationen über das Objekt zugreifen können. Damit keine Fehlermeldungen ausgegeben werden sind mit des @-Zeichens vor den MySQL-Funktion unterdrückt.
PHP:
 					 // Elemente in array Schreiben //
 					 if($this->anz > 0) {
 								 for($i=0; $i<$this->anz; $i++){
 											 $back[$i]=mysql_fetch_array($this->erg);
 								 }
   					    }
  
 					 // Fehlermeldung abfangen und evt. Ausgeben //
 					 elseif(!$this->erg) {
 								 $this->fehler=mysql_error();
 								 if($debug==1){ echo "<br>".$this->fehler."<br>"; }
  
 								 return FALSE;
   					    }
  
 					 // Keine Elemente //
 					 elseif($this->anz==0) {
 								 return FALSE;
   					    }
  
 					 else{ return TRUE; }
  
 					 return $back;
   			}
  
     			######### Ende Methode ########

Sofern es sich um eine Select-Anweisung gehandelt hat, deren Ergebnisliste mindestens einen Datensatz enthält, werden die Datensätze in ein Array geschrieben, das am Ende zurückgegeben wird. Sollte ein Fehler aufgetreten oder kein Datensatz in der Ergebnisliste sein wird FALSE zurückgegeben.

PHP:
           			#### Methode zum Verbinden ###
   			function verbinden() {
 					 // Evt. Verbindung wieder holen //
 					 static $conn;
  
 					 // Wenn keine Verbindung vorhanden neu verbinden //
 					 if(!$conn){$conn = mysql_connect($this->Server,$this->User,$this->Pass);}
  
 					 // Verbindung speichern //
 					 $this->conn=&$conn;
   			}
  
         			######### Ende Methode ########
   }//Ende klasse

Die Funktion verbinden()wird über den Konstruktor aufgerufen. Zunächst wird getestet, ob bereits durch einen vorherigen Aufruf des Objektes oder die Verwendung der Klasse eine Verbindung $conn vorliegt. Sollte dies nicht der Fall sein, wird die Verbindung zur Datenbank hergestellt. Anschließend wird eine Referenz auf diese Verbindung $conn für diese Klasse über $this->conn direkt ansprechbar.


Anwendung:


PHP:
   // Klasse einbinden //
   require_once('inc/class_db.php');
   
   // Neues Objekt //
   $db = new db1();
   // Sql Code //
   $sql = "SELECT * FROM `Tabelle` ORDER BY `ID`;";
   // Ausführen //
   $result= $db->db_sql($sql);
   
   // Auslesen //
   for($i=0; $i<count($result); $i++) {
   	 echo $result[$i]["ID"].": ";
   	 echo $result[$i]["Spalte1"]." - ";
   	 echo $result[$i]["Spalte2"]."<br />";
   }

Attribute:

$db->ID ==> Neue ID ( Verfügbar bei INSERT )
$db->affectedrows ==> Betroffene Datensätze ( Verfügbar bei UPDATE )
$db->erg ==> Ergebnismenge ( Verfügbar bei SELECT )
$db->anz ==> Anzahl an Datensätze ( Verfügbar bei SELECT )
$db->dbcount ==> Anzahl aller Anfragen
 
Zuletzt bearbeitet:
Danke für deine Ausführliche Antwort. Aber ich denke, ich habe mich für adodb entschieden :D
 
Ach du Sch.....
Vielen Dank Dennis. Seien mir mal froh dass dies nicht meine wirklichen Zugangsdaten waren sondern nur Zufällige auf meinem Localhost ;). Kommt davon wenn man nicht am eigenen PC sitzt und nur die eine Klasse rumliegen hat.
 
Zurück