Hallo,
dass "richtige" Typecast in PHP nicht möglich sind, habe ich jetzt bereits herausgefunden. Ich komme aber deswegen bei meinem Problem nicht weiter und würde gerne wissen ob ich überhaupt einen guten Ansatz habe oder ob es nicht anders besser zu lösen wäre.
Ziel ist es ein automatisches Errortracking bei PDOStatement Abfragen zu implementieren.
PHP-Code:
$sth =$pdo->prepare('SELECT x from y where z= ?');
$sth->execute(array(1));
Wenn jetzt ein Fehler darin auftritt, möchte ich dass der Fehler auf dem Bildschirm ausgegeben wird. Was ja so gehen würde:
PHP-Code:
$sth =$pdo->prepare('SELECT x from y where z= ?');
$sth->execute(array(1));
$err = $sth->errorInfo();
if ($err[0] != "00000")
{
print_r($err);
}
Damit ich später wenn es nicht mehr so seien soll, nicht jede Stelle im Code verändern muss, dachte ich mir, dass ich die eine Kindsklasse von PDO erstelle und die Exec-Function überschreibe und darin dann den Trackingcode eintrage
Aber bei PreparedStatements ist es ja die Klasse PDOStatement, welche bei $pdo->prepare() mit zurück gegeben wird. Daher wollte ich in dieser Funktion einhaken und ein von mir definiertes PDOStatement zurück geben:
PHP-Code:
class MYSQLDB extends PDO implements iReportable
{
public function prepare ( $statement)
{
$stmt = parent::prepare($statement);
$stmt = (MYPDOStatement) $stmt
return $stmt;
}
}
class MYPDOStatement extends PDOStatement implements iReportable
{
public function execute()
{
$ret = parent::execute();
$err = $sth->errorInfo();
if ($err[0] != "00000")
{
print_r($err);
}
}
}
So würde es in z.B. in Java funktionieren.
Kann ich sowas hier in PHP auch nachbasteln? oder wäre eine andere Vorgehensweise besser geeignet?
Danke und Gruß
seejay