Problem mit DELETE - PHP/MySQL

wow.MNS

Quest-Mob
Mitglied seit
22.08.2008
Beiträge
50
Reaktionspunkte
0
Kommentare
26
Buffs erhalten
28
Hallo liebe Buffed-Community.

Ich habe mich schon durch alle SuFu´s durchgequält aber nichts aufschlussreiches gefunden.
Daher frage ich hier:
Ich möchte auf meiner Admin-Seite News löschen können. Diese News befinden sich in der MySQL-Datenbank auf meinem Server. Nun klappt aber irgendwas nicht. Also der nimmt die ID der News nicht an, wenn ich per Link diese Löschen möchte. Hier ist alles was ich zurzeit habe:

if ($_REQUEST['news_title']) {

{
$loeschen = 'DELETE FROM news WHERE news_title = '.$_REQUEST['news_title'];
}
$loesch = mysql_query($loeschen);

echo "News wurde erfolgreich gel&ouml;scht!<BR>";

}

Der Link zum Löschen sieht wie folgt aus:

<a href="index.php?news_title=<? echo $row['news_title']; ?>"><button>L&ouml;schen</button></a>

Ich habe es manuell schonmal versucht (also ohne die ID-Abfrage).
Also so:

$loeschen = "DELETE FROM news WHERE news_title = 'TEST'";

Ich glaube, dass ich ein Fehler mit den Anführungszeichen habe, aber ich habe keine Ahnung.

Vielen Dank schonmal im voraus!

Gruß,
stunner
 
echo $loeschen;

Dann siehst Du ja das Statement wie es am Ende ausschaut und kannst es ggf. auch in den phpmyadmin werfen.
Und oben hast Du da gar keine Anführungszeichen nach news_title eingebaut.
 
Also das ist mein Statement:

DELETE FROM news WHERE news_title = TEST


Aber die News wurde nicht entfernt.

Und oben hast Du da gar keine Anführungszeichen nach news_title eingebaut.

Wo meinst du genau? Weil ich glaube daran liegt es ...
 
Hab mir das grad nochma angeguckt.

DELETE FROM news WHERE news_title = 'TEST';

Was fürn SQL Browser nutzt du?
Gibt der keine Fehlermeldungen aus?

PS: Hab da nich so die Ahnung von will nur Anregungen geben:-)
Wir arbeiten bei uns auch mit SQL, deshalb kommt mir das ein bissl bekannt vor.
 
Zuletzt bearbeitet von einem Moderator:
if ($_REQUEST['news_title']) {

{
$loeschen = 'DELETE FROM news WHERE news_title = '.$_REQUEST['news_title'];
}
$loesch = mysql_query($loeschen);

echo "News wurde erfolgreich gel&ouml;scht!<BR>";

}
1. Man sollte nicht "REQUEST" nutzen. In deinem Fall wäre "GET" besser.
2. Man sollte über die Id löschen.
3. richtig debuggen, beispielsweise: mysql_error() hilft.
Code:
$loesch = mysql_query($loeschen) or die("Fehler bei der Abfrage: ".$loeschen."<br />Fehler: ".mysql_error());
http://dev.mysql.com/doc/refman/5.1/de/delete.html
 
Bezogen auf den Eröffnungspost:

Offene Tür - Attack here plz! - Selbst mit $_GET gibts hier sehr sehr sehr einfache Möglichkeiten für SQL-Injection, weil die Variable in keiner Weise behandelt wird und der Eingabewert einfach 1:1 übernommen Wenn news_title leer oder ein String ist, gibts hier übrigens nur ne Fehlermeldung. Die ganze Abfrage ist von der Logik her falsch aufgebaut.
 
Zuletzt bearbeitet von einem Moderator:
Zurück