mysql_fetch_row vesus mysql_fetch_object

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

  • mysql_fetch_row vesus mysql_fetch_object

    ich möchte folgenden CODE ausführen

    PHP-Code:
    $sqlstatement="SELECT LAST_INSERT_ID()";
    $query=mysql_query($sqlstatement);
    $lastinsertid=mysql_fetch_object($query);
    echo 
    $lastinsertid->ID
    das funktoniert aber nicht

    wenn ich das so mache funktoniert das

    PHP-Code:
    $sqlstatement="SELECT LAST_INSERT_ID()";
    $query=mysql_query($sqlstatement);
    $lastinsertid=mysql_fetch_row($query);
    echo 
    $lastinsertid[0]; 
    Warum klappt das eine und das andere nicht? ich habe meine funktionen in Klassen untergebracht, und das Ergebniss soll immer als Objekt zurück gegeben werden.

    es gibt eine function query() die das sqlstatment ausführt
    und es gibt eine function query2Object welches die Ergebnisse als Object zurück gibt.

    leider functoniert das mit LAST_INSERT_ID nicht.........

    stimmt ein Klammer zuviel.............
    Zuletzt geändert von newphp; 03.08.2005, 15:32.

  • #2
    Re: mysql_fetch_row vesus mysql_fetch_object

    Original geschrieben von newphp
    wenn ich das so mache funktoniert das
    schwer zu glauben - deine query enthält eine klammer zu viel.

    wie kommst du denn auf die idee, dass diese query eine spalte namens "id" zurückliefern würde?

    warum überprüfst du nicht erst mal, was $lastinsertid nach dem fetchen enthält (var_dump), anstatt auf irgendwelche sachen zuzugreifen, die gar nicht vorhanden sind?


    und mit mysql_fetch_assoc() hättest du m.E. genau das gleiche "problem".
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ich hab mir das jetzt mal per var_dump ausgeben lassen

      dabei bekomme ich folgendes Ergebniss

      PHP-Code:
      object(stdClass)(1) {
        [
      "LAST_INSERT_ID()"]=>
        
      string(3"188"

      Wie greife ich jetzt auf dieses Objekt zu?
      PHP-Code:
      $lastinsertid=mysql_fetch_object($sqlresource); 
      PHP-Code:
      echo $lastinsertid->LAST_INSERT_ID(); 
      und

      PHP-Code:
      echo $lastinsertid->LAST_INSERT_ID
      geben nichts zurück;

      Kommentar


      • #4
        gelöst

        PHP-Code:
        $sqlstatement="SELECT LAST_INSERT_ID() as ID"
        dann kann man ganz normal auf das Objekt zugreifen

        Kommentar


        • #5
          Code:
          SELECT LAST_INSERT_ID() AS `myLastID`
          ausführen, dann kannst du auf $obj->myLastID zugreifen.

          Kommentar


          • #6
            danke schön

            Kommentar


            • #7
              wieso eigentlich nicht mysql_insert_id ?
              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
              var_dump(), print_r(), debug_backtrace und echo.
              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

              Kommentar


              • #8
                mysql_insert_id () läuft nicht richtig.........zumindest bei mir........ da kommen Werte die können nicht sein.........

                Kommentar


                • #9
                  lol, und anstatt der Sache auf den Grund zu gehen, reist du lieber grad noch ne Query an....

                  Und mit eine DatenbankFrontEnd deiner wahl kann man sehr leicht prüfen, ob die ID die zurück gegeben wurde auch richtig war oder nicht.

                  Kommentar


                  • #10
                    LAST_INSERT_ID() ist eine MYSQL DATENBANK FUNKTION
                    MYSQL_INSERT_ID() ist eine PHP FUNKTION

                    und da ich der Meinung bin wenn MYSQL schon solche Möglichkeiten bereitstellt warum sollte man sie nicht nutzten?

                    Kommentar


                    • #11
                      das ist kein argument.

                      Kommentar


                      • #12
                        stimmt @penezelin

                        auf meiner alter XAMPP instalation hat das nie funktoniert, auf meiner neuen (aktuellen) hab ich noch nie ausprobiert -> hab mich halt an LAST_INSERT_ID gewöhnt.

                        Außerdem schreiben die bei PHP.net man sollte besser die MYSQL FUNKTION benutzen.............

                        Kommentar


                        • #13
                          Der Punkt ist, das du in der Resource die LastInsertID schon mitgeliefert bekommst die du hast, wenn das Ergebniss von mysql_query(Insert) zurück kommt. Warum also nochmal ne Query anschmeißen?

                          Ich geh ja auch nicht zum Bäcker um Brötchen zu holen, um später nochmal hinzugehn und zu Fragen wieviel er mir denn gegeben hat....

                          Kommentar


                          • #14
                            da hast du natürlich recht @prego ich schreib die funktion um........

                            Kommentar


                            • #15
                              Original geschrieben von newphp
                              Außerdem schreiben die bei PHP.net man sollte besser die MYSQL FUNKTION benutzen.............
                              Das steht dort nicht. Lies mal genauer nach
                              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                              var_dump(), print_r(), debug_backtrace und echo.
                              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                              Kommentar

                              Lädt...
                              X