Facebook Finden Sie Alex Wiebogen Twitter Finden Sie Alex Wiebogen Xing Finden Sie Alex Wiebogen Google+

Share this Page:


 

MySQL Klasse

Diese MySQL Klasse ist eine Modifizierte Version der von Cerberus veröffentlichten MySQL Klasse.
Die Modifikationen beziehen sich hauptsächlich auf den Errorhandler, welcher komplett erneuert wurde. Fehlermeldungen werden vom User vollständig verborgen und durch Templates ersetzt. Report der Meldungen erfolgt in ein Logfile.
Features
  • Verbindungsaufbau mittels Magic Function __construct
  • Error Handler mit Unterscheidung Normal/Critical Error
  • Templates zur Fehlerausgabe
  • Logfiles
  • Funktion zur Ausgabe der letzten SQL-Abfrage
  • SQL-Query-Compiler
  • Statistik mit QueryCounter, Laufzeit, etc
  • Debugfunktion ON/OFF

Anwendungsbeispiele | Zum Changelog

Konfiguration

Der inkludierte Errorhandler der Klasse greift auf 2 Templates und 1 Logfile zu. Die Pfade zu diesen Dateien als erstes anpassen da ansonsten auch Fehlermeldungen nicht korrekt angezeigt und gelogt werden. Bei den Pfaden wird vom root Verzeichnis ausgegangen.
PHP-Code:
 			    /**
			    * @access 	private
			    * @var 		textfile
			    * @desc		Textfile für Fehlermeldungen (logfile)
			    */
			    private $errorlogfile = '/logs/mysql_errors.txt';
			   
			    /**
			    * @access	private
			    * @var		HTML Template
			    * @desc		Kritischer Datenbankfehler Vorlage-File
			    */
			    private $crit_error_templ = '/templates/mysql/db_error_critical.html';
			
			    /**
			    * @access	private
			    * @var		HTML Template
			    * @desc		Kritischer Datenbankfehler Vorlage-File
			    */
			    private $norm_error_tpl = '/templates/mysql/db_error_page.tpl';
				
				


Verbindungsaufbau

PHP-Code:
				/***********************************
 				** Klasse neu Initialisieren
 				************************************/
 				// Erstellen der Variable. Verhindert Notices
 				$dbdata = array();
 				// Befüllen des Arrays mit den Datenbank Zugangsdaten
 				$dbdata['host'] 	= 'localhost';
 				$dbdata['port'] 	= ''; // Falls der MySQL Server nicht über 3309 läuft
 				$dbdata['dbname'] 	= 'datenbank';
 				$dbdata['user'] 	= 'root';
 				$dbdata['pass'] 	= 'password';
 				$dbdata['email'] 	= 'admin@yourdomain.com';
 				
				$db = new MySQL($dbdata);
				
				

Die Zugangsdaten können selbstverständlich auch an anderen Stellen implementiert werden. Dieses Beispiel dient nur zur Orientierung wie das Array befüllt werden muss. Verpflichtende Angaben sind host, user und dbname. Das Passwort wurde zur Verwendung auf einem Localhost ohne Passwort nicht als Pflichtfeld deklariert.

Manch einer wird sich wundern warum bei den Conditionen/Voraussetzungen (WHERE) ein " und kein ' wie sonst verwendet wird. Das lässt sich hier einfach demonstrieren.
PHP-Code:
						/***********************************
		 				** Anzahl der Datensätze - FALSE bei Fehler
		 				************************************/
		 				// Abfrage mit Variablen in der Condition
		 				// Die Singlequotes müssen hier escaped werden um den PHP Tag zu schließen und die 
		 				// Variable zu verwenden. 
		 				
		 				$array = $db->queryObjectArray('tabelle', Array('*'), 
		 								'WHERE rang = \'' . $variable . '\'");
		 				
		 				// Anders bei diesem Beispiel. Liefert die selbe Query, sieht aber schöner aus.
		 				
		 				$array = $db->queryObjectArray('tabelle', Array('*'), 
		 								"WHERE rang = "' . $varuable . '");

		 				// Dass dieser Ansatz ebenfalls funktioniert, zeigt lediglich dass PHP zu großzügig
		 				// Programmiert wurde, und zeigt für mich von einem schlechten Programmierstil.
		 								
		 				$array = $db->queryObjectArray('tabelle', Array('*'), 
		 								"WHERE rang = $variable");
		 				$array = $db->queryObjectArray('tabelle', Array('*'), 
		 								"WHERE rang = " . $variable);
						
						
						


queryCount - Anzahl von Datensätzen

PHP-Code:
				/***********************************
 				** Anzahl der Datensätze - FALSE bei Fehler
 				************************************/
 				// Anzahl aller Datensätze dieser Tabelle
 				$count = $db->queryCount('tabelle');
 				// Anzahl aller Datensätze mit einer Bedingung
 				$count = $db->queryCount('tabelle', "WHERE id > 10");
				
				


querySingleArray - Ein einzellnes Array

PHP-Code:
				/***********************************
 				** Ein Array mit selektierten Felder, oder allen - FALSE bei Fehler
 				************************************/
 				// Selektiert alle Felder des Datensatzes mit der ID 10
 				$array = $db->querySingleArray('tabelle', Array('*'), "WHERE id = 10");
 				// Selektiert die angegebenen Felder des Datensatzes mit der ID 10
 				$array = $db->querySingleArray('tabelle', Array('id', 'username', 'email'), 
 												"WHERE id = 10");
				


queryObjectArray - Mehrere mehrdimensionale Arrays

PHP-Code:
				/***********************************
 				** Ein/mehrere Array(s) mit selektierten Felder, oder allen - FALSE bei Fehler
 				************************************/
 				// Selektiert alle Felder des Datensatzes mit der ID größer als 10
 				$array = $db->queryObjectArray('tabelle', Array('*'), "WHERE id > 10 
 												ORDER BY id DESC LIMIT 15");
 				
 				// Selektiert die angegebenen Felder des Datensatzes mit der ID 10
 				$array = $db->queryObjectArray('tabelle', Array('id', 'username', 'email'), 
 												"WHERE id > 10 ORDER BY id DESC");
 				
 				// Beispiel für eine Komplexe Query
 				$array = $db->queryObjectArray('tabelle', 
 												Array('table1.id', 
 												'table1.username', 
				 								'table1.email', 
				 								'table2.name', 
				 								'table2.adresse'), 
				 								"LEFT JOIN table2 ON table.id = table2.userid 
				 								WHERE id > 10 ORDER BY id DESC");
				


querySingleItem - Seperates Feld abfragen

PHP-Code:
				/***********************************
 				** Einen Feldwert abfragen - FALSE bei Fehler
 				************************************/
 				$array = $db->querySingleItem('tabelle', 'spaltenname', "WHERE id = 10");
				


updateCount - Integer der Datenbank verändern

PHP-Code:
				/***********************************
 				** Count verändern - FALSE bei Fehler
 				************************************/
 				$array = $db->updateCount('tabelle', 'spaltenname', 'Operator', 'Differenz', 
 									"WHERE id = 10");
 				// Beispiel - einzellner User
 				$array = $db->updateCount('users', 'visits', '*', '3', "WHERE id = 10");
 				// Beispiel - mehrerer User
 				$array = $db->updateCount('users', 'visits', '*', '3', "WHERE id > 10");
				


deleteData - Löschen von Datensätzen

PHP-Code:
				/***********************************
 				** Datensätze löschen - FALSE bei Fehler
 				************************************/
 				$array = $db->deleteData('tabelle', "WHERE id = 10");
 				
				

Diese Funktion hat absichtlich einen Limiter von 1 in der Klasse Diese kann auf Zeile 481 der Klasse entfernt werden. Ich habe diesen Limiter aus Sicherheitsgründen eingebaut. Selbst bei einer Injection in die Klasse, kann mit dieser Funktion so kein großer Schaden angerichtet werden. Um mehrere Datensätze zu löschen muss der Befehl via Schleife ausgegeben werden.
PHP-Code:
				/***********************************
 				** Mehrere Datensätze löschen - FALSE bei Fehler
 				************************************/
 				$array = array('1', '3', '4', '5', '22', '35', '90');
 				foreach($array AS $key => $value){
 					$db->deleteData('users', "WHERE id = '" . $value . "'");
 				}
 				

describe_Table - Tabellen Informationen

PHP-Code:
				/***********************************
 				** Alle Details der Tabelle abfragen
 				************************************/
 				$array = $db->describe_Table('tabelle');
				


maxID - Liefer höchsten Wert zurück

PHP-Code:
				/***********************************
 				** Größten Wert des Feldes abfragen
 				************************************/
 				$array = $db->maxID('feldname', 'tabelle');
 				// Wird kein Feldname angegeben wird nach dem Feld id gesucht
				


minID - Liefer kleinsten Wert zurück

PHP-Code:
				/***********************************
 				**  Kleinsten Wert des Feldes abfragen
 				************************************/
 				$array = $db->minID('feldname', 'tabelle');
 				// Wird kein Feldname angegeben wird nach dem Feld id gesucht
				


insertRow - Neuen Datensatz einfügen

PHP-Code:
				/***********************************
 				**  Kleinsten Wert des Feldes abfragen
 				************************************/
 				$db->insertRow(Array('id' => $id,
 									 'user' => $user,
 									 'email' => 'blabla@gmx.at'),
 									 'tabelle', TRUE);
 				// Der letzte Parameter ist für ON DUPLICATE KEY UPDATE zustädnig
				


updateRow - Datensatz aktuallisieren

PHP-Code:
				/***********************************
 				**  Datensatz aktuallisieren
 				************************************/
 				$db->updateRow(Array('id' => $id,
 									 'user' => $user,
 									 'email' => 'blabla@gmx.at'),
 									 'tabelle', "WHERE id = 10");
 				
 				// Mehrere Datensätz aktuallisieren
 				$db->updateRow(Array('bonus' => $bonus),
 									 'tabelle', "WHERE id > 0");
				


showStatistic - Datenbankperformance ausgeben

PHP-Code:
				/***********************************
 				**  Kleinsten Wert des Feldes abfragen
 				************************************/
 				echo $db->showStatistic();
				


get_mysql_query - Letzte benutzte Query ausgeben

PHP-Code:
				/***********************************
 				**  Debug Funktion - Letzte Query
 				************************************/
 				echo $db->get_mysql_query();
				


show_error & hide_error - Fehlerausgabe

PHP-Code:
				/***********************************
 				**  Debug Funktion - Fehlerausgabe aktivieren
 				************************************/
 				$db->show_errors();
 				/***********************************
 				**  Debug Funktion - Fehlerausgabe deaktivieren
 				************************************/
 				$db->hide_errors();
				


CMS Version: 1.1 | Build: 20160918_0314_v3_MySQL5-6-0

Copyright © 2014 by Wiebogen Systems all rights reserved!