mysql Datensatz löschen

Moderatoren: crack, Marwin, Krüsty

mysql Datensatz löschen

Beitragvon Rainer » Sonntag 15. Juni 2008, 22:25

Hallo,
ich arbeite seit einiger Zeit mit php und fange jetzt mit mysql an. Komme auch soweit klar, bis ich jetzt auf das Problem mit dem Löschen eines Datensatzes gestoßen bin: der Datensatz wird zwar wie erwartet gelöscht, aber gleichzeitig auch immer der letzte Datensatz in der Tabelle.

<?php
$loeschen = "DELETE FROM Daten WHERE id = 3";
if( mysql_query( $loeschen ) )
echo( "Datensatz erfolgreich gelöscht!" );
else
die( "Fehler! Konnte Datensatz nicht löschen: " . mysql_error() );
?>

vorher wurde natürlich mit mysql_connect die Verbindung zum Server erfolgreich hergestellt und mit mysql_select_db die Datenbank ausgewählt. Kann sich jemand vorstellen, woran das liegen kann? Ich habe schon die Ausführung alle anderen Programmteile weggelassen, es bleibt bei dem Fehler. Die Tabelle hat ein Feld `id`, das automatisch eingetragen wird. Alle anderen Selectierungen bei UPDATE usw. funktionieren einwandfrei, es wird wirklich nur der gewählte Datensatz bearbeitet.

Vielen Dank schon mal.

Gruß Rainer
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg

Re: mysql Datensatz löschen

Beitragvon crack » Montag 16. Juni 2008, 01:42

Ja, Ich hatte schon das gleiche Problem und kenne die Lösung:
Code: Alles auswählen
<?php
$loeschen = "DELETE FROM Daten WHERE id = 3 LIMIT 1";
if( mysql_query( $loeschen ) )
echo( "Datensatz erfolgreich gelöscht!" );
else
die( "Fehler! Konnte Datensatz nicht löschen: " . mysql_error() );
?>


Hinter das 'WHERE id=parameter' muss noch dieses 'LIMIT 1' das besagt das nur der gewählte Satz gelöscht werden soll ... :!:
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: mysql Datensatz löschen

Beitragvon Rainer » Montag 16. Juni 2008, 10:36

Hallo crack,
vielen Dank für die schnelle Hilfe. Darauf wäre ich nun nicht gekommen, dazu bin ich noch zu neu bei mySql.
Eine schöne Woche (für den Rest)

Gruß Rainer
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg

Re: mysql Datensatz löschen

Beitragvon Rainer » Montag 16. Juni 2008, 11:27

Hallo crack,

ich habe den Quelltext gerade geändert und getestet, der Fehler passiert weiterhin. Es wird immer der jeweils letzte Datensatz mitgelöscht. Der zu löschende Datensatz wird korrekt gelöscht. Da die ID nur einmal vorhanden ist, müsste nach meinem Verständnis eh nur der eine Datensatz gelöscht werden; wird freilich unter WHERE ein Name angegeben und der ist mehrmals drin, würden freilich die anderen Datensätze auch gelöscht. Ich verstehe das einfach nicht.

Gruß Rainer
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg

Re: mysql Datensatz löschen

Beitragvon crack » Montag 16. Juni 2008, 18:15

sehr eigenartig, in der Tat ... welche ID hat denn der letzte Datensatz? ist ID ein 'primaerer Schlüssel' und mit dem Attribut 'auto Increment' versehen?
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: mysql Datensatz löschen

Beitragvon Rainer » Montag 16. Juni 2008, 18:26

ja, mit dem Quelltext wurde die Tabelle erstellt. Die Tabelle hat 6 Einträge. Lösche ich den jeweils letzten, funktioniert es einwandfrei, ansonsten wird zusätzlich immer der jeweils letzte Eintrag mit gelöscht. Ich bin gerade wieder seit gut 3 Stunden dran und komme einfach nicht auf den Fehler. Danke, dass Du's Dir noch mal anschaust.

Gruß Rainer

Code: Alles auswählen
<?php
$command = 'CREATE TABLE '.$_POST['table'];
$create_query = $command." (
    id      INT PRIMARY KEY AUTO_INCREMENT,
    Name    VARCHAR(30),
    eMail   TEXT,
    Home    TEXT,
    Content TEXT,
    Datum   VARCHAR(19),
    Comment TEXT
   
    )";
   if( mysql_query( $create_query ) )
      echo( "Tabelle erzeugt.<br>" );
   else
      die( "Fehler! Konnte keine Tabelle ereugen: " . mysql_error() );
?>
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg

Re: mysql Datensatz löschen

Beitragvon Rainer » Dienstag 17. Juni 2008, 18:54

Hallo crack,
ich habe den Fehler gefunden und es war ein besonders dummer Fehler. Der letzte Datensatz wurde nicht gelöscht; da ich bei der Kontrolle der verbleibenden Datensätze rückwärts auflisten wollte, habe ich das mit einer FOR-Schleife gemacht und vorher die Anzahl der Datensätze zum zurückzählen ausgelesen. Wenn ich also in der Mitte einen Datensatz gelöscht habe, wurde bei der Kontrolle der letzte Datensatz nicht mit aufgelistet und ich hatte fälschlicherweise angenommen, er wurde mit gelöscht. Dennoch ist der Hinweis auf LIMIT für mich von Nutzen, wenn ich mal nicht nach ID lösche, soweit hatte ich mich noch nicht durchgearbeitet. Entschuldige bitte den Stress und nochmals danke.

Gruß Rainer
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg

Re: mysql Datensatz löschen

Beitragvon crack » Dienstag 17. Juni 2008, 19:12

Wenns jetzt funzt ist doch Supi :D Guter Tip: arbeite dich ein wenig in PHPMyAdmin ein, denn damit kannst Du die Vorgänge innerhalb der Datenbank sehr gut kontrollieren und Datensätze auch von Hand bearbeiten :idea:
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Re: mysql Datensatz löschen

Beitragvon Rainer » Dienstag 17. Juni 2008, 20:18

danke für den Tip. Na immerhin, einen Nutzen hatte das ganze doch noch für mich: ich habe alle Einzelteile der Datenbankgeschichte noch ein paar mal durchdacht, das kann ja nie schaden... :-)). Ich brauchte das für ein Gästebuch, das ich zunächst datenmäßig über eine Textdatei geregelt hatte und jetzt umgeschrieben habe, da ich bei 1&1 sowieso die Datenbank mitbezahlen muss, wenn ich php haben möchte und ausserdem lässt sich das kommentieren und löschen von Einträgen so auch eleganter lösen.
Nochmals vielen Dank für die Hilfe.

Gruß Rainer
Rainer
Alter Hase
 
Beiträge: 79
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg


Zurück zu PHP

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron