Daten aus Datenbank updaten

Hi, ja hatte auch schon mit unlink(); gedacht. Wenn ich den folgenden Code nehme:

PHP:
$sql = mysql_query("DELETE FROM $essay WHERE id = '".$_POST["id"]."' ");
$result = mysql_query($sql);
$data   = mysql_fetch_assoc($result);
unlink($data['filepath']);
echo mysql_error();

echo "Danke! Der Eintrag wurde gelöscht!<br />";
echo "<a href=\"liste.php\">Zurück zur Liste</a> oder <a href=\"logout.php\">ausloggen</a>.";

kommt folgende Fehlermeldung

Code:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in line 82

Zeile 82 ist $data = mysql_fetch_assoc($result);
 
Gehen wir mal ganz logisch an das Problem heran: UPDATE aktualisiert einen Datensatz, liefert aber nur zurück, ob dieser Vorgang erfolgreich war oder nicht. INSERT fügt einen Datensatz hinzu, liefert aber auch nur zurück, ob dieser Vorgang erfolgreich war oder nicht. Das Gleiche gilt auch für DELETE. Der einzige CRUD-Befehl (create, read, update, delete), welcher ein anderes Ergebnis liefern kann, in PHP eine result resource, ist SELECT. Deshalb musst du meinen Codeschnipsel auch so verwenden, wie ich ihn dir gezeigt habe: Datensatz mit SELECT auslesen und dann erhältst du die nötigen Daten. Danach kannst du ihn löschen.
 
Hi, ah klar - muss ja nur mit SELECT gehen! Habe deinen Code so übernommen und probiert einfach da zu intergrieren. Es kommt aber die gleiche Fehlermeldung:

PHP:
$sql = "DELETE FROM $essay WHERE id = '".$_POST["id"]."' ";
$result = @mysql_query($sql);
$sql2    = 'SELECT filepath FROM ' . $essay . ' WHERE id = ' . $_GET['id'];
$result2 = mysql_query($sql2);
$data   = mysql_fetch_assoc($result);
unlink($data['filepath']);
echo mysql_error();

Error:
HTML:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
 
Ergänze deinen zweiten mysql_query mal so:

PHP:
$result2 = mysql_query($sql2) or die(mysql_error());

Wenn diese Fehlermeldung auftritt, trat ein Fehler bei mysql_query() auf, sodass keine "result resource" zurückgegeben werden konnte.
 
Hi, die Fehlermeldung ist weg, aber mir gibt mysql_error(); folgendes aus:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
Ok, sowas in der Art habe ich befürchtet. :D Wandel das nochmal so ab und dann schauen wir uns mal den Query an:

PHP:
$result2 = mysql_query($sql2) or die("Query: ".$sql2."<br />".mysql_error());
 
Hi, darauf kommt folgende Fehlermeldung:

Query: SELECT filepath FROM essaybowl WHERE id =
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
So und nun schau dir den Query mal genau an und sag mir was dir an der WHERE-Klausel auffällt ;)

Edit: Mir fällt gerade auf, dass du anscheinend versuchst erst den Datensatz zu löschen um ihn danach auszulesen. Vielleicht wäre es anders herum besser. ;) Dann funktioniert das ganze auch logisch.
 
Zuletzt bearbeitet:
ARGH :D Okay, habs korrigiert! Fehlermeldung ist nun weg, gelöscht wird die Datei vom Server aber nicht :/

PHP:
$sql = "DELETE FROM $essay WHERE id = '".$_POST["id"]."' ";
$result = @mysql_query($sql);
$sql2    = "SELECT filepath FROM $essay WHERE id = '". $_POST["id"]."'";
$result2 = mysql_query($sql2) or die("Query: ".$sql2."<br />".mysql_error());  
$data   = mysql_fetch_assoc($result2);
unlink($data['filepath']);
 
Das ist das, was ich mit

[...] versuchst erst den Datensatz zu löschen um ihn danach auszulesen. Vielleicht wäre es anders herum besser.

meinte. Du löschst den Datensatz zuerst und versuchst ihn dann wieder auszulesen, der ist aber gar nicht mehr da. Also wird auch nix gelöscht.

Führe den DELETE query nach dem SELECT aus und alles ist gut. ;)
 
Zurück