PDO problem mit lastinsertID

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PDO problem mit lastinsertID

    Hallo ich Probiere gerade mit PDO ein wenig rum und bin da auf ein kleines problem gestoßen. Also ich möchte eine email adress in meiner DB speichern und mir die letzte Id ausgeben lassen. Also das speichern funzt schonmal soweit aber leider nicht das id auslesen. Hier mal der Code

    PHP-Code:
            $email = array(':email'=>$_POST['email']);

            
    $sql "INSERT INTO c_email (email) VALUES (:email)";

            
    $stmt MyDB::getInstance()->prepare($sql);
            
    $stmt->execute($email);
            
    $userID MyDB::getInstance()->lastInsertId();
            echo 
    $userID
    In der Fehlermeldung steht ich die Methode auf kein Objekt anwende wenn ich das mal richtig deute

    Hier mal die Fehlermeldung original
    Code:
    [B]Fatal error[/B]:  Call to a member function lastInsertId() on a non-object
    mfg
    mo

  • #2
    Schuss ins Blaue:
    PHP-Code:
    $userID $stmt->getInstance()->lastInsertId(); 
    Peter

    btw: wie hast du die Verbindung aufgebaut? So sollte es laut Doku klappen
    PHP-Code:
    $db = new PDO(...);
    ...
    $userID $db->lastInsertId(); 
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zeig im Zweifel mal den Code der Klasse. getInstance gibt anscheinend kein Objekt zurück.

      Kommentar


      • #4
        Offenbar liefert MyDB::getInstance() beim zweiten mal kein Objekt. Zumindest wenn die Fehlermeldung mit dem Code übereinstimmt.

        Kommentar


        • #5
          Die verbindung habe ich mit der Klasse MyDB aufgebaut die die Statische methode getInstance hat. Das ganze sieht so aus.
          PHP-Code:
          public static function getInstance()
              {
                  if(!
          self::$db)
                  {
                      
          self::$db = new PDO('mysql:host='.MySQLconfig::DB_HOST.';     dbname='.MySQLconfig::DB_DATABASEMySQLconfig::DB_USERMySQLconfig::DB_PASSWORD,
                                                 array(
          PDO::ATTR_PERSISTENT => true,
                                                       
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ,
                                                       
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC)
                                                 );
                                                 return 
          self::$db;
                  }
              } 
          Was mich verwirrt ist das das insert Statement auch ausgeführt wird.

          Kommentar


          • #6
            Was gibt denn getInstance zurück, wenn !self::$db nicht erfüllt ist?

            Richtig, gar nichts.

            Kommentar


            • #7
              Du hast außerhalb der if-Bedingung kein return. Also du bekommst nur beim ersten Aufruf ein Datenbankobjekt und dann nur mehr NULL.

              Hab ich aber gut geraten

              Kommentar


              • #8
                Besten dank das return war eine klammer zu früh^^

                Kommentar

                Lädt...
                X