Hallo,
ich stehe jetzt vor dem Problem, dass PDOStatement mir keine Fehlermeldungen zurückliefert, sondern nur - wie auch in der Dokumentation festgehalten - ein boolsches false zurück gibt. Dies ist jedoch für die Fehlerbehebung problematisch.
Randnotiz zum Aufbau der Datenbank-Abstraktions-Schicht (kurz DAS):
1) Eine Instanz (bzw. Referenz) der Klasse DatabaseAbstractionLayer wird erzeugt
2) Die Verbindungsdaten für die Datenbank werden übergeben
3) Die DAS erzeugt nun ein Objekt der jeweiligen Datenbanktreiber zwecks Datenbank-Abstraktion (Notwendig um die Abfragen abstrakt formulieren zu können)
4) Der Treiber schustert durch dem Aufruf der Funktion $DAS->ExecuteQuery($parameter1, $parameter2, etc.) die Abfrage zusammen und führt diese auf der aktiven Datenbankverbindung (per Referenz aus der DAS) aus
Das Problem hierbei ist, dass PDO Fehlermeldungen (Exceptions) zurückgibt, PDOStatement bzw. PDO->prepare diese unterschlägt und ein nutzloses false zurück gibt.
Ist es irgendwie möglich, an die Fehlermeldung heran zu kommen?
Und gleich noch eine Frage hinterher, erlaubt PDO->prepare() nur Platzhalter im Sinne von :variable oder dürfen Eigenkonstruktionen (z.B.: %var_1%) auch verwendet werden (gemäß str_replace Logik)?
Gruß
dtdesign
[PHP] PDO->prepare()/PDOStatement und Fehlermeldungen
-
- Posts: 391
- Joined: 2006-09-05 21:12
- Location: Berlin
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: [PHP] PDO->prepare()/PDOStatement und Fehlermeldungen
Klar, einfach den richtigen Error Handler setzen, siehe http://de3.php.net/PDO#pdo.error-handling.dtdesign wrote:Ist es irgendwie möglich, an die Fehlermeldung heran zu kommen?
Nein, die Platzhalter müssen immer ":name" lauten. Eigene Escapezeichen, wie % sind nicht möglich.dtdesign wrote:Und gleich noch eine Frage hinterher, erlaubt PDO->prepare() nur Platzhalter im Sinne von :variable oder dürfen Eigenkonstruktionen (z.B.: %var_1%) auch verwendet werden (gemäß str_replace Logik)?
Wenn du Spass daran hast, kannst du natürlich das Prepared Statement vorher mit str_replace und Konsorten bearbeiten und alle Vorkommen von "%variable%" durch ":variable" ersetzen.
-
- Posts: 1031
- Joined: 2002-10-14 22:56
Re: [PHP] PDO->prepare()/PDOStatement und Fehlermeldungen
Ich kann mich nicht erinnern, dass ich beim Schreiben meiner DAS für PDO derartige Probleme hatte.
Falls es wirkllich nicht hilft, das Error-Handling auf PDO::Exception zu stellen, musst du dir eine Wrapper Klasse bauen, die von PDOStatement erbt, und die Original-Funktionen per parent:: aufrufen.
Falls es wirkllich nicht hilft, das Error-Handling auf PDO::Exception zu stellen, musst du dir eine Wrapper Klasse bauen, die von PDOStatement erbt, und die Original-Funktionen per parent:: aufrufen.
-
- Posts: 391
- Joined: 2006-09-05 21:12
- Location: Berlin
Re: [PHP] PDO->prepare()/PDOStatement und Fehlermeldungen
Ich habe das Problem gefunden, es lag an meiner eigenen Dummheit. Exceptions werden für gewöhnlich nicht direkt behandelt, sondern durch meinen Exception-Handler abgefangen und aufbereitet.
Fakt war, dass ich hier mittels eines try-Blocks die Exception abgefangen habe, ohne diese wirklich zu behandeln (leerer catch-Block)... grml
Ich danke euch für die Hilfe.
Gruß
dtdesign
Fakt war, dass ich hier mittels eines try-Blocks die Exception abgefangen habe, ohne diese wirklich zu behandeln (leerer catch-Block)... grml
Ich danke euch für die Hilfe.
Gruß
dtdesign