Anfönger -> Mysql Variable

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

  • Anfönger -> Mysql Variable

    Guten Morgen,

    bin leider blutiger Anfänger und verstehe einige grundlegende Sachen nicht. Wäre toll, wenn mir jemand auf die Sprünge helfen könnte.

    Ich habe mit INSERT Daten in eine MysqlDB geschrieben. Ein paar Zeilen tiefer möchte ich die zuletzt eingetragene ID auslesen und als Variable für UPDATE nutzen. Aber irgendwas mache ich da falsch, da die Variable scheinbar immer leer ist. Sorry, stehe wirklich ganz am Anfang und völlig auf dem Schlauch.

    Gruß
    Heisti


    PHP-Code:
    $query "SELECT id FROM daten_test ORDER BY id DESC LIMIT 1"
    $resultID = @mysql_query($query); 
    while (
    $data mysql_fetch_array($resultID))
    {
     
    $nummer=$dsatz["id"]; 
    }
     
    $sql="UPDATE daten_test SET bild_1 = '".$bild_1."', bild_2 = '".$bild_2."', bild_2 = '".$bild_2."', 
    bild_3 = '"
    .$bild_3."', bild_4 = '".$bild_4."' 
    WHERE id = "
    .$nummer
    Zuletzt geändert von heisti; 07.01.2009, 14:50.

  • #2
    Schau dir mal an, welcher Variable du den aktuellen mysql record zuweist, und aus welcher du dann die id versuchst rauszuholen.

    edit: Und wenn du nur einen Datensatz rausholst, reicht es, wenn du der variable einfach mysql_fetch_array zuweist und nicht noch eine while-schleife darum machst.
    Freedom is a state of mind. Not a state in which we live.

    troxdev.ch | animefieber

    Kommentar


    • #3
      Hallo TroX

      vielen Dank für Deine Hilfe. Leider probiere ich hier nur sinnlos rum, ohne zu verstehen, um was es geht. Vielleicht kannst Du mir einmal helfen die ganze Abfrage und den Umgang mit den Variablen zu verstehen.

      mit $query startet die Datenbankabfrage aus Tabelle daten_test, sucht dort alle Einträge in der Spalte "id", sortiert diese absteigend und bleibt dann bedingt durch LIMIT 1 beim höchsten Eintrag stehen. Ist das so richtig?

      Aber dann habe ich Probleme zu verstehen, was dann vor sich geht bzw. gehen soll. Ich weiß selber, dass das Grundlagen sind, die ich aber nur durch lesen bisher nicht verstanden habe.

      Der Fehler liegt hier:

      PHP-Code:
      $resultID = @mysql_query($query); 
      $data mysql_fetch_array($resultID)

      $nummer=$dsatz["id"
      Richtig? Ist mir alles (noch) zu hoch.

      Gruß
      Heisti

      Kommentar


      • #4
        Sag du mir doch mal, welche variable du nimmst, um den record zu speichern und welche du nimmst, um etwas aus dem record auszulesen.

        Vielleicht kommst du ja dann selbst drauf.
        Freedom is a state of mind. Not a state in which we live.

        troxdev.ch | animefieber

        Kommentar


        • #5
          $resultID speichert den record???

          $data zum Auslesen???

          Du quälst mich.... , aber das ist gut so! Vielleicht kapiere ich dann endlich was ich da mache.

          Gruß
          Heisti

          Kommentar


          • #6
            fast. welcher variable weist du mysql_fetch_array(...) zu?
            und aus welcher variable (hinweis: array) liest du die id raus?
            Freedom is a state of mind. Not a state in which we live.

            troxdev.ch | animefieber

            Kommentar


            • #7
              Ich habe mit INSERT Daten in eine MysqlDB geschrieben. Ein paar Zeilen tiefer möchte ich die zuletzt eingetragene ID auslesen und als Variable für UPDATE nutzen.
              Dann verwende: http://de3.php.net/manual/de/functio...-insert-id.php

              Der Weg über "SELECT ..... LIMIT 1" wird unter Last zu hässlichen Race Conditions führen.
              Wir werden alle sterben

              Kommentar


              • #8
                Ich weiss, wo du was speicherst und was du damit machen willst, nur scheinbar du nicht wirklich.


                Du weist der Variable $data den Datensatz zu, versuchst die id aber aus $dsatz zu bekommen. Klingelts jetzt?
                Freedom is a state of mind. Not a state in which we live.

                troxdev.ch | animefieber

                Kommentar


                • #9
                  Müsste ich bei $nummer statt $dsatz $data nehmen? Meine das habe ich schon probiert und es ging auch nicht.

                  Also:
                  PHP-Code:
                  $resultID = @mysql_query($query); 
                  $data mysql_fetch_array($resultID)

                  $nummer=$data["id"
                  @Combie

                  Vielen Dank für den Hinweis! Das hatte ich beim Suchen auch schon gefunden. Und wenn ich die Grundlagen kapiert habe, kann ich das ja auch einbauen. Aber jemand der nicht genau weiß, was eine Variable ist oder was ein query genau macht, der beschäftigt sich erst mal nicht mit "Race Conditions".

                  Gruß
                  Heisti

                  Kommentar


                  • #10
                    Guten Morgen,

                    habe meine Fehler gefunden und jetzt wohl auch verstanden, was da passiert. Es sieht jetzt so aus:

                    PHP-Code:
                    $query mysql_query("SELECT id FROM daten_test
                                                        ORDER BY id DESC
                                                        LIMIT 1"
                    );
                                    
                    $num=@mysql_query($query);
                                    
                    $dsatz=mysql_fetch_array($query);
                                    
                    $nummer=$dsatz["id"]; 
                    Und bei echo $nummer zeigt er mir auch was an. ABER, leider etwas falsches.

                    Direkt vor dieser Abfrage schreibe ich etwas in die Datenbank mit:
                    PHP-Code:
                    $sql="INSERT INTO daten_test SET bezeichnung = '".$bezeichnung."', material =
                     '"
                    .$material."', durchmesser = '".$durchmesser."' "
                    Das funktioniert auch und wird eingetragen. ABER meine Variable $nummer zeigt mir den vorletzten Datensatz an und nicht den, den ich vorher mit der INSERT-Anweisung eingetragen habe. Die id in der Tabelle ist auto_increment und Primärschlüssel.

                    Werden die Sachen nicht der nacheinander abgearbeitet? Also neuer Eintrag und dann die Abfrage nach der ID?

                    Ich habe es dann noch mal mit $nummer = mysql_insert_id(); versucht, aber da bekomme ich den Wert "0" (evtl. nicht richtig gemacht?).

                    Ich bin bemüht zu lernen, aber nehmt Rücksicht auf einen alten Mann.

                    Gruß
                    Heisti
                    Zuletzt geändert von heisti; 08.01.2009, 09:15.

                    Kommentar


                    • #11
                      Hat sich erledigt - Danke. Habe den Fehler gefunden!

                      Gruß
                      Heisti

                      Kommentar


                      • #12
                        Ich bin bemüht zu lernen,
                        Naja... aber das falsche.... !
                        Wie bist du auf die Idee gekommen da überall @ einzustreuen?
                        Warum nur?

                        aber nehmt Rücksicht auf einen alten Mann.
                        Keine Gnade!
                        Wer meine Tipps in den Wind schlägt, muß im Gegenzug auch auf meine Hilfe verzichten können.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Zu Deiner Beruhigung siehst es mittlerweile so aus:

                          PHP-Code:
                          $nummer mysql_insert_id(); 
                          Gruß
                          Heisti

                          Kommentar


                          • #14
                            Und die @ auch eliminiert?
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Ja, aber ich habe noch nicht ganz verstanden warum.


                              PHP-Code:
                              $sql="INSERT INTO daten_test SET  bezeichnung = '".$bezeichnung."', material = '".$material."', 
                              durchmesser = '"
                              .$durchmesser."' ";
                              $result mysql_query($sql); 
                              $nummer mysql_insert_id(); 
                              Ich werde Euch allerdings weiter ärgern.

                              Gruß
                              Heisti

                              Kommentar

                              Lädt...
                              X