PHP - MYSQL - ID herausfinden

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

  • PHP - MYSQL - ID herausfinden

    hallo,

    ich habe hier ne MYSQL Tabelle die jedem neuen Datensatz ne ID zuweißt (INT AUTO_INCREMENT PRIMARY KEY)

    Wenn ich nun per PHP die Daten hinzufüge

    PHP-Code:
    mysql_query("INSERT INTO tabelle
    (blub)
    VALUES
    (wert);"

    wie bekomme ich dann die ID?
    geht das mit nem SQL Befehl?

    atm mach ichs einfach indem ich die komplette Tabelle nach dem Wert 'wert' durchsuche und dann die ID bekomme (im ehcten Script mit emrh als nur einem Wert).
    Aber sehr performat und elegant scheiont die Lösung mal nicht...

    Hat jemand ne Idee?
    Schonma thx

    leb0rtran

  • #2
    mysql_insert_id()

    Kommentar


    • #3
      wie bekomme ich dann die ID?
      mysql_last_id

      geht das mit nem SQL Befehl?
      Auch das: SELECT LAST_INSERT_ID()

      atm mach ichs einfach indem ich die komplette Tabelle nach dem Wert 'wert' durchsuche und dann die ID bekomme (im ehcten Script mit emrh als nur einem Wert).
      Autsch! Da wäre es ja noch klüger nach der größten (MAX()) ID zu suchen.

      Den Hinweis auf die Suche erspare ich mich...

      Kommentar


      • #4
        Hier musst du allerdings aufpassen, die kein anderes INSERT dazwischen funkt, was dir bei einem System mit vielen Schreibzugriffen schon mal schnell passieren kann. Die ID, die du dann bekommst, muss also nicht zwingend von dem Datensatz sein, den du gerne hättest. Sollte das für dich von Bedeutung sein musst du entsprechende Vorkehrungen treffen, zum Beispiel mit einem Table Lock.

        Kommentar


        • #5
          ok, danke schonmal

          habs mit mysql_insert_id() gemacht
          aber eine Frage wäre da noch

          die Ressource ID die man bei mysql_insert_id() angeben kann stammt von dem MYSQL Query oder?

          also:

          PHP-Code:
          $resid mysql_query($sql);
          mysql_insert_id($resid); 
          stimmt das so?

          Kommentar


          • #6
            link_identifier

            The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level warning is generated.

            Kommentar


            • #7
              Ja, aber unter Berücksichtigung der Tatsachen, dich ich schon unter meinem ersten Post angesprochen habe.
              Wie auch im PHP Handbuch steht (Note: Because mysql_insert_id() acts on the last performed query[...]) musst du sicherstellen, dass du auch die ID bekommst, die du haben willst. MySQL ist hier nicht race save, was auch unsinnig wäre.

              Kommentar


              • #8
                @Blaster: Nur die Ruhe, wenn er bis jetzt mysql_last_id() nicht kannte, wird das Projekt hoffentlich nicht solche Ausmaße habe...

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  @Blaster: Nur die Ruhe, wenn er bis jetzt mysql_last_id() nicht kannte, wird das Projekt hoffentlich nicht solche Ausmaße habe...
                  Ja, das ist schon klar, nur halte ich es nicht für falsch, auch Maintainer von kleineren Projekten für solche Probleme zu sensibilisieren. Ich sag lieber zuviel als zu wenig
                  Und vielleicht lernt ja auch noch der ein oder andere von den erfahreneren Semestern etwas dabei
                  Zuletzt geändert von bla$ter; 04.02.2008, 23:14.

                  Kommentar

                  Lädt...
                  X