Höchste id

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

  • Höchste id

    was ist der unterschied zwischen diesen beiden statements:

    ---------------------------------------------
    SELECT max(ID) FROM table_name
    ---------------------------------------------
    mysql_insert_id($mysql);
    ---------------------------------------------

    beide geben die höchste/letzte id zurück, wenn auch in verschiedenem zusammenhang.

    wolfgang

  • #2
    das erste gibt dir die höchste id zurück.

    das zweite gibt dir die id zurück, die vergeben worden ist, nach dem gerade passiertem INSERT.

    EDIT:
    ein blick ins handbuch schadet niemandem !!!
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      @Abraxax
      mit verlaub, die handbuchbemerkung ist unpassend und überflüssig.
      was glaubst du, woher ich diese information habe?

      im übrigen beantwortet das nicht meine frage:
      - der letzte eintrag ist automatisch der höchste
      - nach dem letzten insert hat die letzte id automatisch den höchsten wert

      ich finde logisch zwischen beiden statements keinen unterschied.

      deshalb noch einmal:
      welches statement hat in welcher situation in der praxis einen vorteil?

      wolfgang

      Kommentar


      • #4
        ich verweise deshalb auf das handbuch, weil es dort beschrieben steht.

        http://de.php.net/manual/de/function...-insert-id.php

        mysql_insert_id() liefert 0, wenn die vorhergehende Abfrage keinen AUTO_INCREMENT Wert erzeugt hat. [color=red]Falls Sie den Wert zur späteren Verwendung speichern möchten, stellen Sie sicher, dass Sie mysql_insert_id() direkt nach der Abfrage aufrufen, die einen Wert erzeugt hat. [/color]

        im vergleich hierzu.

        http://www.mysql.com/doc/en/example-...umn-group.html

        EDIT:
        ich denke, dass du damit den unterschied sehen kannst.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Abraxax,
          ich habe beide links noch einmal durchgelesen, kann jedoch immer noch keine antwort auf meine frage finden (sie mag auch akademisch sein).

          es ist die praxis offensichtlich so, dass ich mit mysql_insert_id() überprüfen könnte, ob die abfrage einen auto-increment wert erzeugt hat, mit anderen worten, ob der insert erfolgreich war. alles andere wäre ja bei einem insert-statement ein misserfolg, der ja sowieso in der form if (!$sql) echo "fehler"; geprüft werden sollte.

          andererseits macht das max(ID) statement in der praxis durchaus sinn, um z.b. den namen für ein bild zu finden, dass genauso heissen soll wie der zuvor erfolgte db-eintrag.

          es bleibt aber immer dabei:
          der zuletzt durch auto_increment erzeugte wert ist auch immer der höchste wert.
          deshalb ist es offensichtlich gleich, welches statement verwendet wird, um nach einem insert den höchsten wert zu finden.

          oder sehe ich das falsch?
          wolfgang

          Kommentar


          • #6
            also wie schon in den texten steht, verwendet man MAX() wenn man den höchsten wert haben will.

            das mysql_insert_id() ist interessant wenn du mit mehrern verknüpften tabellen arbeiten willst. in einer tabelle stehen die daten und in einer weiteren die verknüpfungen. nun brauchst du aber die id die zuletzt in der datentabelle eingetragen worden ist, um diese in die verknüpfungstabelle einzutragen. dafür ist das da.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              @Abraxax,

              danke, die antwort habe ich gesucht, jetzt kommt sinn rein.

              wolfgang

              Kommentar


              • #8
                genau. so einfach ist das...
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Zur Ursprungsfrage:
                  select max(ID) nicht das gleiche wie mysql_insert_id()

                  max(ID) kann 1 sein und next id zB 10000

                  Zeigt das einen Unterschied auf?
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    @MelloPie
                    das stimmt schon. nur

                    mysql_insert_id() != next id

                    mysql_insert_id() gibt dir die letzte eingetragene autoincrement.id nach dem insert zurück. was du unter next.id meinstest, ist aber der nächste wert, der für die id vorgesehen ist.

                    nach einem insert wird diese id entsprechend über mysql_insert_id() zurückgegeben.

                    aber wie dem auch sei, ich hoffe doch, dass weserweb den unterschied nun kennt....
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      hab ich von next.id gesprochen?
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        die next id bekommt man wohl eher durch show table status heraus...
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          hab ich von next.id gesprochen?
                          jepp.... siehe:
                          max(ID) kann 1 sein und next id zB 10000
                          kann aber auch ein missverständnis meinerseits sein...
                          die next id bekommt man wohl eher durch show table status heraus...
                          so ist es...
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Und Du stellst da einen Zusammenhang zwischen next id und mysql_insert_id() her??? Beide Aussagen sind doch wahr und völlig unabhängig voneinander...

                            select max(ID) nicht das gleiche wie mysql_insert_id() // stimmt

                            max(ID) kann 1 sein und next id zB 10000 // stimmt auch

                            Beantworte nie Threads mit mehr als 15 followups...
                            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                            Kommentar

                            Lädt...
                            X