PHP-MySQL
Autor/Kontakt
Autor: Sascha SingertE-Mail:
Art der Lösung
PHP-KlasseVorwort
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 |