mihomia: Datensatz löschen - MySQL

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&ouml;scht";}
  if($result <> 1){ echo "Wurde nicht gel&ouml;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?

  1. Hallo,

      
    
    >   mysql_query("delete * from $tabelle where id = '$_POST[id]' ") or die(mysql_error()) ;  
    
    
      
    delete from ...  
    
    

    und desweiteren

    gruss

    --
    Swiss Army Chainsaw
    Terrorific!
    VI VI VI - the editor of the beast!
  2. 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&ouml;scht";}
      if($result <> 1){ echo "Wurde nicht gel&ouml;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

  3. 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&ouml;scht";}
      if($result <> 1){ echo "Wurde nicht gel&ouml;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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.