PHP-MySQL

Autor/Kontakt

Autor: Sascha Singert
E-Mail:

Art der Lösung

PHP-Klasse

Vorwort

Ursprünglich für ein anderes Projekt entwickelt, dann aber doch nicht benutzt, stelle ich diese Klasse jedem zur Verfügung. Wie schon beim mail_filter gibt es keine Garantie oder Gewährleistung. Schadensersatzansprüche (oder sonstige andere juristische Späße) sind nichtig – Nutzung auf eigene Gefahr! Nachdem dies geklärt ist, folgt eine kurze Beschreibung des Funktionsumfangs. Das Wichtigste steht in Form von phpdoc in der Datei selbst.

Konzept

Es gibt im Prinzip nur ein wichtiges Konzept zur sauberen Nutzung dieser Klasse: Arbeite mit nativen Arrays und maskiere nur selbst, wenn die Methode query direkt genutzt wird. Bereits der Konstruktor erwartet ein assoziatives Array mit den Elementen host, port, user, pass und dbname. Probleme oder Fehler werden durch Exceptions behandelt. Soweit nicht anders beschrieben, erledigt die Klasse den Rest.

Methoden

Im Folgenden die öffentlichen Methoden. Bei $dataArray entspricht der Schlüssel dem Spaltennamen. + query($querystring : string) : resultset Der Query-String wird ohne weitere Prüfung/Maskierung an den MySQL-Server weitergereicht. Die Rückgabe entspricht der Rückgabe der PHP-eigenen Funktion mysql_query. + query_safe($table : string, [$dataArray : array [, $keysNotToMask : array]]) Führt einen Query-String aus und ersetzt ggf. zuvor Muster durch ihre Werte. Ansonsten wie query(). Muster werden von eckigen [Klammern] umschlossen. + func($funcName : string [, $arg1 [, $arg2, [, ...]]]) : string Es wird eine MySQL-Funktion ausgeführt. Die weiteren Parameter dieser Methode werden maskiert als Parameter der MySQL-Funktion genutzt. + update($table : string, $dataArray : array, $where : string [, $keysNotToMask : array]) Führt ein Update-Statement auf die benannte Tabelle aus. + insert($table : string, $dataArray : array [, $keysNotToMask : array]) Führt ein Insert-Statement auf die benannte Tabelle aus. + delete($table : string, $where : string) Führt ein Delete-Statement auf die benannte Tabelle aus.

Beispiele

$loginData = array(); $loginData['host'] = 'localhost'; $loginData['port'] = 3306; $loginData['user'] = 'someuser'; $loginData['pass'] = 'somepassword'; $loginData['dbname'] = 'somedb'; $class = new MySQL($loginData); // neue Verbindungs-Instanz Beispiel #1: insert $data = array(); $data['name'] = $name; $data['birthday'] = 'NOW()'; $class->insert('person', $data); Beispiel #2: func $dayname = $class->func('DAYNAME', '1998-02-05'); Beispiel #3: query_safe $data = array('ID' => 5123); $result = $class->query_safe('SELECT id FROM table WHERE id = [ID]', $data);

TODO

  • besseren WHERE-Clause-Checker implementieren; es besteht die Gefahr, dass ein zweiter Befehl durchgereicht werden kann
  • Wrapper für Stored Procedure implementieren (Methode namens call?)
  • multi_insert(...) implementieren

Techn. Voraussetzungen

  • PHP5

Mitarbeit

Über Feedback bin ich immer dankbar.

Download & Chronik

RC1 .zip Initiale Version ohne explizite Versionnummer