Problem mit PDO
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfangen
array
ausgabe
check
code
dank
ende
fehler
herstellen
hinweis
host
klasse code
major
nichtmal
rufen
statement
syntax
test
verbindung
weile
-
Hey... Ich tüfel jetzt seit ner weile am Debugging meiner PDO Class, nur nichts klappt, und ich verstehe nicht warum
Also, das ist meine Klasse:
class Database extends PDO { public function query($statement) { echo 'blah'; //try { $result = parent::query($statement); /*} catch (PDOException $e) { echo $e->getMessage(); Debugger::out("Debugger::query sollte durch Debugger::prepare ersetzt werden!"); Debugger::out("Fehler in der SQL Syntax: $query"); Debugger::out("[" . $e->getCode() . "] " . $e->getMessage() ); ErrorHandler::major("Database Error"); }*/ return $result; } public function prepare($statement, array $driver_options = array()) { echo 'blah'; //try { $stmt = parent::prepare($statement);// $driver_options); //} /*catch (PDOException $e) { echo $e->getMessage(); Debugger::out("Debugger::query sollte durch Debugger::prepare ersetzt werden!"); Debugger::out("Fehler in der SQL Syntax: $query"); Debugger::out("[" . $e->getCode() . "] " . $e->getMessage() ); ErrorHandler::major("Database Error"); }*/ return $stmt; } }
Wie man sieht habe ich bereits die Debuggins auskommentiert, welche eigentlich Fehler abfangen sollen.
Hiermit rufe ich das ganze auf:
echo 'test<br/>'; print_r(Core::$database); echo 'test'; print_r(Core::$database->query('SELECT * FROM `test` WHERE id=`1`')); $stmt = Core::$database->prepare('SELECT * FROM `test` WHERE id=:id'); $stmt->bindParam(':id', 1, PDO::PARAM_INT); $stmt->execute(); print_r($stmt); $result = $stmt->fetch(PDO::FETCH_ASSOC); print_r( $result ); echo 'ende';
(Davor ist die Coreinit usw, das ist alles geregelt). Error_reporting steht auf E_ALL. Die ausgabe die ich erhalte ist:
test
PDO Object ( ) test
Und ich check einfach nicht, warum nichts ausgeführt wird. Es wird ja nichtmal mehr das "blah" ausgegeben beim Funktionscall. Und ich raffe einfach nicht wieso...
Bevor hier jetzt eine Diskusion kommt "Statsiche Variablen macht man nciht accessable" und was weiß ich, Hinweise vllt gerne, aber es geht hier darum rauszufinden, warum das dind die Query nicht startet. Und ja, die Verbindung der Klasse zur DB besteht, sonst würde nicht "Object PDO()" angezeigt werden. Den fehler habe ich schon ausgemerzt. Die Init sieht btw so aus:
if(CORE_USE_DATABASE) { try { self::$database = new PDO(CORE_DB_TYPE . ':dbname=' . CORE_DB_DATABASE . ';host=' . CORE_DB_HOST, CORE_DB_USERNAME, CORE_DB_PASSWORD); } catch (PDOException $e) { ErrorHandler::major('Kann keine Datenbankverbindung herstellen: '. $e->getMessage() ); } }
Ich bin für jegliche Fehlerhinweise Dankbar. Ich arbeite das erste mal mit PDO, doch hätte nicht gedacht, dass es irgendwie so problematisch wird... :(
Danke im vorraus
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage