kostenloser Webspace werbefrei: lima-city


Problem mit PDO

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g****e

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!