Datensatz löschen?

[MYSQL-Anfänger]

Hallo,
in eine Personalliste, die über PHP in einer MYSQL-Datenbank-Tabelle angesprochen wird, füge ich neue Einträge ein oder editiere ich vorhandene Einträge. Das klappt soweit so gut.

Nun aber möchte ich gerne Eintrags-Datensätze auch löschen. Ich versuche dieses mit:


[Datei mit einem Datensatz in Formularansicht:]


$adresse3 = „delete1.php?id=“ . $row[‚id‘];

'">


[delete1.php:]

<?php include('../connect.inc.php');
if ($conn == TRUE) {echo "Verbindung hergestellt.";} echo $id; $sql="DELETE \* FROM lehrer3 WHERE id=$id"; if(mysql\_query($sql,$conn)) echo "Gelöscht!"; else echo "Nicht gelöscht!"; ?\> ------------------------------------ Dabei wird die Verbindung korrekt (wie auch bei anderen Seiten) hergestellt; allerdings erscheint dann immer die Meldung "Nicht gelöscht!". Was mache ich falsch? Gruß Jeppes

Hallo,

richtig wäre DELETE FROM…
nicht DELETE * FROM

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Na klar! Danke! So klapp es gut.

J. Schloer

Alles schön und gut, aber:

Warum meldet das Skript korrekte Ausführung der Löschung („Gelöscht!“) ohne Fehler; wenn ich aber eine neue Datenbankabfrage mache (mit phpmyadmin), ist der Datensatz noch da!

Auch in der Listenansicht meines Skriptes erscheint er wieder, als wenn gar nix wäre.

Code:

$sql=„DELETE * FROM lehrer3 WHERE id=$id“;
if(mysql_query($sql,$conn))
echo „Gelöscht!“;
else
echo „Nicht gelöscht!“;

Was funktioniert hier nicht?

Hi,

$sql=„DELETE * FROM lehrer3 WHERE id=$id“;
if(mysql_query($sql,$conn))
echo „Gelöscht!“;
else
echo „Nicht gelöscht!“;

Weil du damit nur prüfst ob die Abfrage erfolgreich war. Sie ist aber auch erfolgreich selbst wenn nichts gelöscht wird.

http://de2.php.net/manual/de/function.mysql-query.php

Wieviele Datensätze gelöscht wurden wird mit mysql_affected_rows() festgestellt.

Ausserdem ist das „delete * from …“ wie schon erwähnt selbst bei mysql falsch.

Gruss
Quaser

PS: Das gehört mehr ins PHP Brett

Also gut, es muss heißen:

$sql=„DELETE FROM lehrer3 WHERE id=$id“;

Aber warum wird nicht gelöscht?

Gruß

Jeppes

mach mal ein „echo $sql;“ nach der Zuweisung und schau in der db nach ob es die id gibt.

Gruss
Quaser

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die id gibt es, z.B.:
30

Das Echo gibt z.B. aus:
DELETE FROM lehrer3 WHERE id=30

Trotzdem ist der Datensatz nicht gelöscht.
Könnte es an einem fehlenden COMMIT liegen?

Gruß

J. Schlör

Die id gibt es, z.B.:
30

Das Echo gibt z.B. aus:
DELETE FROM lehrer3 WHERE id=30

Trotzdem ist der Datensatz nicht gelöscht.
Könnte es an einem fehlenden COMMIT liegen?

Nur wenn Du auch Transaktionen verwendest.

Welchen Typ haben deine Tabellen? myIsam oder InnoDB?

Nur um ganz triviale Fehler auszuschließen: das Delete geht schon auf dieselbe DB wie der anschließende Select?

Gruß

Peter

Gruß

J. Schlör

Ich hab’s endlich hingekriegt. Irgendwie hat das mit der Variablen $id nicht gestimmt.

Danke allen, die mitgedacht haben!

J. Schlör