letzten Datensatz löschen



  • Ich habe mir eure Beiträge angeschaut und löse es jetzt so:

    $erg = mysql_query("SELECT MAX(id) FROM buecherliste");
    $num = mysql_fetch_row($erg);
    $erg = mysql_query("DELETE FROM buecherliste WHERE id=$num[0]");
    

    notabene: id steht als erstes Attribut in der Liste, daher num[0].

    PS
    ah ja, ist das eine Art goldene Regel, dass SELECT * nie verwendet werden soll? Hab ich noch gar nicht drüber nachgedacht. Thx.



  • Ein Select * soll nur dann nicht verwendet werden, wenn du nicht alle Datensätze brauchst. Wenn doch, dann isses natürlich ok. 😃



  • Es kann dann aber ggf. Probleme machen, falls du noch Spalten hinzufügst o.ä.
    Mit list(num)=mysql_fetch_row(num) = mysql\_fetch\_row(erg); hast du in $num direkt die Anzahl 😉
    Ob jetzt MAX(id) oder COUNT(*) schneller ist müsste man ausprobieren, weiß ich grad nicht 🙄



  • MAX() COUNT() können unterschiedliche Werte liefern.
    Ist somit nicht das selbe

    COUNT() ist denke ich auch schneller da sich MYSQL den letzten Wert der ID nicht merkt. Das merkt man daran, daß ein aufruf auf last_insert_id nur mit dem vorhandenen Handle funktioniert. Sobald man den Connect schließt ist der Wert weg.
    MYSQL kennt nur die Anzahl der Datensätze welche man mit count() bekommt.



  • 🙄 Logisch
    Dann wird er wohl MAX() brauchen, denn da er ja vorhat Datensätze zu löschen liefert COUNT() für ihn nach dem ersten Löschen ein für ihn nicht brauchbares Ergebnis 😉



  • Genau

    Allerdings fehlt noch die Antwort auf Volkard`s Frage.



  • Bin grad etwas durcheinander 😉
    Ja, das wäre wohl das allerbeste! Aber das war doch eher eine Aussage, als eine Frage - finde ich 🙄 - wenn, dann aber an C++arsten 😃



  • geht es zufällig darum, den frisch gemachten eintrag in die bücherliste zu stornieren

    Wenn dies zutrifft hat ja Volkard die Antwort schon gegeben



  • flenders schrieb:

    wenn, dann aber an C++arsten 😃

    ja, an C++arsten. ich warte immernoch auf die antwort.



  • Es ging mir nicht um den Wert (id) der letzten Einfügeoperation, sondern generell um den letzten Datensatz, z. B. nach mysql_close und erneutem Öffnen der DB. Daher ist mysql_insert_id zwar gut, aber nicht genau passend für mein Problem gewesen. Danke!


Anmelden zum Antworten