Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysql_insert_id() Problem

Einklappen

Neue Werbung 2019

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

  • [Erledigt] mysql_insert_id() Problem

    mysql_insert_id() gibt immer das auto increment aus dem primary key der zuletzt hinzugefügten spalte einer tabelle zurück.

    Jetzt habe ich diesen Quelltext, in der diese Funktion gleich 2mal auftaucht.

    PHP-Code:
      $sql "
        INSERT INTO login (
          name,
          url,
          benutzer_id,
          icon,
          suchbegriffe
        )
        VALUES (
          '
    $name',
          '
    $login_url',
          '
    $benutzer_id',
          '
    $icon',
          '
    $suchbegriffe'
        )"
    ;
        
    mysql_query($sql);
        
    $login_id mysql_insert_id();
        
    $suchtags explode(",",$suchbegriffe);
        foreach(
    $suchtags as $tag)
        {
          
    $sql "SELECT id FROM tags WHERE name = '.$tag.'";
          
    $erg=mysql_query($sql);
          list(
    $tags_id) = mysql_fetch_row($erg);
          
    $rows=mysql_num_rows($erg);  
          if (
    $rows == 0)
          {
            
    $sql "INSERT INTO tags (name) VALUES ('$tag')";
            
    mysql_query($sql);
            
    $tags_id mysql_insert_id(); /*FEHLER*/
            
    echo $tags_id;
          }
          
    $sql "INSERT INTO login_tags (tag_id,login_id) VALUES ($tags_id,$login_id)";
          
    mysql_query($sql);
        } 
    Den Fehler hab ich markiert, an dieser stelle bekommt $tags_id den selben wert wie $login_id obwohl zuvor die INSERT abfrage ein ganz anderen auto increment in einer anderen tabelle hinzufügt. Logisch erscheint mir das jedenfalls nicht. Wer hat Rat?


  • #2
    arr sry fehler in der sql syntax... jetztg gehts auch

    Kommentar


    • #3
      Zitat von defcut Beitrag anzeigen
      Den Fehler hab ich markiert, an dieser stelle bekommt $tags_id den selben wert wie $login_id obwohl zuvor die INSERT abfrage ein ganz anderen auto increment in einer anderen tabelle hinzufügt.
      Tut sie das wirklich ...?

      Von der Oligk her sollte mysql_inert_id an dieser Stelle die erwartete ID liefern - ausser, wenn das davor stehende INSERT gar nicht durchgeführt werden konnte.

      Und da du in deinem Code keinerlei sinnvolle Fehlerbehandlung durchführst, vermute ich, dass genau das das Problem ist - INSERT hat nicht funktioniert, also ist die zuletzt eingefügte ID noch die des vorherigen INSERT-Statements.

      Kommentar


      • #4
        PHP-Code:
        $sql "SELECT id FROM tags WHERE name = '.$tag.'"
        musste

        PHP-Code:
        $sql "SELECT id FROM tags WHERE name = '$tag'"
        heißen :-/

        ich sollte nen programm mit highlightern benutzen, dann komm ich mit der syntax auch net immer so durcheinander trotzdem danke.

        Kommentar

        Lädt...
        X