Stud.IP benutzt für die Datenbankzugriffe eigene, von PDO und PDOStatement abgeleitete Klassen. DbManager::get() liefert immer automatisch eine Instanz von StudipPDO zurück. Man kann dieses Objekt genauso benutzen wie ein Standard-PDO Objekt, darüberhinaus enthält es aber noch ein paar Erweiterungen, die den Umgang mit der Datenbank erleichtern.
StudipPDO
1. Automatische Parametererkennung, Zusätzliche Parameter Typen
Die an eine Statement übergebenen Parameter werden anhand des PHP Typs auf einen passenden PDO Parametertypen gemappt. D.h. z.B., wenn ein übergebener Parameter NULL in PHP ist, wird er auch in der Abfrage als ein SQL NULL ersetzt. Es stehen noch neue Parameter Typen zur Verfügung:
1.1 StudipPDO::PARAM_ARRAY
Der Parametertyp erlaubt die Übergabe eines Arrays, das dann zu einer Wertliste expandiert wird. Zu benutzen mit dem IN () Konstrukt in SQL.
Bsp:
1.2 StudipPDO::PARAM_COLUMN
Dieser Parametertyp erlaubt die Übergabe eines Strings, der ohne weitere Behandlung in die SQL Abfrage eingesetzt wird. Damit kann z.B. ein Parameter im ORDER BY Teil benutzt werden. Weil das ein Sicherheitsproblem sein kann, wird in jedem Fall jedes nicht-Wort Zeichen aus dem Parameter herausgefiltert.
Bsp:
2. Prepared Statements to go
Da Prepared Statements in der Anwendung etwas umständlich sind, wurde ein Abkürzung für häufig benutzte Varianten eingebaut. Das erspart auch die Eingabe der PDO Konstanten für den fetch-mode. Dazu stehen diese fetch Methoden außerdem direkt im StudipPDO Objekt zur Verfügung stellen, mit der Möglichkeit eine query und die Parameter direkt mit anzugeben.
Bsp: