Datensatz löschen - MySQL
mihomia
- php
Hallo. Ich möchte gerne per Klick auf einen Löschen-Link einen Datensatz aus einer Tabelle löschen. Dazu habe ich folgendes Script erstellt:
buch löschen:
<?
$host = "localhost";
$user = "root";
$password = "";
$dbname = "romina_buecherliste";
$tabelle ="romina_buchtabelle";
mysql_connect($host, $user, $password);
mysql_select_db('$dbname');
mysql_query("delete * from $tabelle where id = '$_POST[id]' ") or die(mysql_error()) ;
$result=mysql_query($mysql_del);
if($result == 1){ echo "Wurde gelöscht";}
if($result <> 1){ echo "Wurde nicht gelöscht";}
?>
Leider erhalte ich dabei immer die Fehlermeldung
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 '* from romina_buchtabelle where id = ''' at line 1
kann mit der allerdings nicht wirklich viel anfangen. Woran könnte das Problem liegen?
Hallo,
> mysql_query("delete * from $tabelle where id = '$_POST[id]' ") or die(mysql_error()) ;
delete from ...
und desweiteren
gruss
Hallo. Ich möchte gerne per Klick auf einen Löschen-Link einen Datensatz aus einer Tabelle löschen. Dazu habe ich folgendes Script erstellt:
buch löschen:
<?
$host = "localhost";
$user = "root";
$password = "";
$dbname = "romina_buecherliste";
$tabelle ="romina_buchtabelle";mysql_connect($host, $user, $password);
mysql_select_db('$dbname');mysql_query("delete * from $tabelle where id = '$_POST[id]' ") or die(mysql_error()) ;
$result=mysql_query($mysql_del);
if($result == 1){ echo "Wurde gelöscht";}
if($result <> 1){ echo "Wurde nicht gelöscht";}
?>Leider erhalte ich dabei immer die Fehlermeldung
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 '* from romina_buchtabelle where id = ''' at line 1
kann mit der allerdings nicht wirklich viel anfangen. Woran könnte das Problem liegen?
Ich persönlich bevorzuge Abfragen immer vorher zusammen zu bauen, damit man sich diese ggf. per echo anschauen kann; da sieht man mitunter die seltsamsten Dinge, da vor allem das Handling mit den Anführungszeichen tricky sein kann. Für Dein Problem wäre folgendes Konstrukt denkbar:
$q_Recset='SELECT * FROM '.$tabelle.' WHERE id="'.$_POST["id"].'"';
echo $q_Recset; // Bei Bedarf zur Kontrolle
mysql_query($q_Recset) or die(mysql_error());
Wenn $_POST["id"] ein numerischer Wert ist, müssen natürlich die Anführungszeichen weg:
q_Recset='SELECT * FROM '.$tabelle.' WHERE id='.$_POST["id"];
(Anführungszeichen bei "id" nicht vergessen)!
Jetzt sollt's eigentlich klappen
Hi,
mysql_query("delete * from $tabelle where id = '$_POST[id]' ") or die(mysql_error()) ;
Welchen Wert hat denn die Konstante id?
Aber egal, selbst wenn der String "id" gemeint wäre:
Stell Dir vor, was passiert, wenn ich an Dein Script einen Post-Parameter namens id mit einem Wert wie
1' or id > 1 or id = '4
übergebe ...
if($result == 1){ echo "Wurde gelöscht";}
if($result <> 1){ echo "Wurde nicht gelöscht";}
Du kennst else?
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 '* from romina_buchtabelle where id = ''' at line 1
kann mit der allerdings nicht wirklich viel anfangen. Woran könnte das Problem liegen?
Daran, daß das zusammengesetzte Statement nicht so aussieht wie Du es erwartest.
Setz es in einem String zusammen und laß ihn Dir zur Kontrolle ausgeben.
cu,
Andreas