PHP SQL You have an error....

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • PHP SQL You have an error....

      Hallo!

      Ja, ich weis "der" schon wieder, oder auch nicht.

      Aufjedenfall habe ich gedacht um mehr in PHP zu machen muss ich Projekte realisieren. Jetzt wollte ich ein Newsscript schreiben, mit Datenbank. Datenbank steht, mysqlverbindung auch, tabellen alles geht.
      Die Ausgabe der Beiträge erfolgt ohne Fehlermeldung. Das Eintragen weitere Daten in die Tabelle funktioniert auch ohne Fehlermeldung. (Alles ohne Copy and Paste). Nun wolllte ich auch noch ein Admin Bereich gestalten, in dem man Posts anhand der ID die erstellt wird zu löschen. Man soll in eine Eingabemaske die ID eingeben und auf Löschen klicken. Funktioniert auch! NUR:

      PHP-Quellcode

      1. DELETE * FROM daten WHERE ID = '22' MySQL-Fehler: 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 daten WHERE ID = '22'' at line 1

      print_r($sqlab1);, um zu sehen was ausgegeben wird.
      Glaubt mir , ich habe von gestern an wirklich so viel Gegooglet. Auch viel gefunden, nur keinerlei Hilfe.

      In Debuggen bin ich eigentlich gar nicht so schlecht. Aber naja....

      Nun kommen wir zum Code:

      PHP-Quellcode

      1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
      3. <head>
      4. <title></title>
      5. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
      6. <meta name="description" content="" />
      7. <meta name="author" content="" />
      8. <meta name="keywords" content="" />
      9. <link href="style/style.css" type="text/css" rel="stylesheet" />
      10. <link href="fav.png" type="image/x-icon" rel="shortcut icon" />
      11. </head>
      12. <body>
      13. <?php
      14. mysql_connect('','root','');
      15. mysql_select_db('news');
      16. if(empty($_POST['ID'])){
      17. }
      18. else{
      19. $sdf = $_POST['ID'];
      20. $sqlab1 = "DELETE * FROM daten WHERE ID = '$sdf' ";
      21. print_r($sqlab1);
      22. $res = mysql_query($sqlab1) or die ("MySQL-Fehler: " . mysql_error());
      23. $anzahl = mysql_num_rows($res);
      24. while($datensatz = mysql_fetch_assoc($res)){
      25. echo "Es wurden " . $anzahl . " Datens&auml;tze gel&ouml;scht.";
      26. }
      27. }
      28. ?>
      29. <form method="post" action="delete.php" >
      30. ID:<input type="text" name="ID" style="width:25px;" />
      31. <input type="submit" value="L&ouml;schen" />
      32. </form>
      33. </body>
      34. </html>
      Alles anzeigen


      Zur Info, echo "Es wurden " . $anzahl . " Datens&auml;tze gel&ouml;scht."; wird niemals ausgegeben. Obwohl das Löschen funktioniert.


      Greez

      Vielen Dank
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Also was ich sehen kann, das alles nicht mehr ganz zeitgemäß geschrieben wird.
      Mein Tipp schau mal auf Laravel - A Clean & Classy PHP Framework das ist ein sehr schnelles und einfach zu verstehendes PHP Framework, womit du deine Wünsche und Träume in wenigen Schritten erstellen kannst. Weit ab von Spagetti Code und von solch unsauberen Lösung wie du sie im Moment anwendest. ( Nicht persönlich nehmen, aber die Welt des PHP geht immer mehr in Richtung OOP. Also warum eine "Veraltete" Variante einsetzen wenn man später wieder von vorne anfängt?)

      Du kannst gerne auch mal den Cross oder den Glupschi fragen, was sie von Laravel halten. Beide haben eine mehrstündige Einweisung von mir bekommen ;)

      Lieben Gruß
    • @Synaptic
      Herzlich Willkommen kommen bei Wayne Interessiert's

      Falls du meinen Post richtig gelesen hast, sofern dein IQ das zulässt. solltest du bemerkt haben das ich nicht mal Ansatzweiße auf den Query eingegangen bin. Ich habe Ihm lediglich einen Tipp für die Zukunft gegeben. Ob er es beherzigen wird oder nicht ist seine Entscheidung. Warum du nun wieder so einen Scheiß schreibst ist mir echt ein Rätsel. Aber das zeugt mal wieder von deiner geistigen Reife welche ich in deinem Post leider vergeblich gesucht habe.

      In diesem Sinne bitte ich dich solche Zusatzkommentare einfach dort hinzuschieben wo die Sonne niemals scheint.
      Du kannst deinen Senf zum Thread dazugeben, kein Problem.

      In diesem Sinne
    • Synaptic;308384 schrieb:

      Das nichts ausgegeben wird, liegt an der die Anweisung, welche zutrifft wenn ein MySQL Fehler returnt wird.
      Ein einfaches DELETE FROM ohne das * sollte dein Problem beheben :)


      Habe ich bereits versucht, mein Query sieht so aus.
      $sqlab1 = "DELETE FROM daten WHERE ID = '" . $_POST['ID']."'";

      doch dort kommt ebenfalls der Fehler:"
      Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\newws\delete.php on line 33

      Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\newws\delete.php on line 34


      Ich habe schon gelesen das es an dem Query liegen soll, finde aber absolut keinen Fehler. Habe schon mehrfach versucht den Text umzustellen.

      Nochmals, mein Code:

      PHP-Quellcode

      1. <?php
      2. mysql_connect('','root','');
      3. mysql_select_db('news');
      4. if(empty($_POST['ID'])){
      5. }
      6. else{
      7. $sdf = $_POST['ID'];
      8. //"DELETE FROM daten WHERE ID = " . $_POST['ID'];
      9. $sqlab1 = "DELETE FROM daten WHERE ID = '" . $_POST['ID']."'";
      10. $res = mysql_query($sqlab1) or die ("MySQL-Fehler: " . mysql_error());
      11. $anzahl = mysql_num_rows($res);
      12. while($datensatz = mysql_fetch_assoc($res)){
      13. echo "Es wurden " . $anzahl . " Datens&auml;tze gel&ouml;scht.";
      14. }
      15. }
      16. ?>
      17. <form method="post" action="delete.php" >
      18. ID:<input type="text" name="ID" style="width:25px;" />
      19. <input type="submit" value="L&ouml;schen" />
      20. </form>
      Alles anzeigen



      Ich betone: Mir ist bewusst das manche Methoden veraltert sind und OOP angesagt ist. Ich möchte es aber von mir aus so benutzen und habe nicht vor das im "realen" leben zu benutzen sondern einfach nur aus spass.

      Und ich lasse mir auch gerne Tipps geben, bis jetzt hatte ich noch nie etwas von einem Framework gehört also höre ich mir das auch gerne an.


      Also slow't down.


      edit:

      kann es auch an der Datenbank liegen?
      Bilder
      • db.jpg

        101,81 kB, 1.157×650, 238 mal angesehen
    • Das wird daran liegen, dass du nach dem LÖSCHEN des Datensatzes, was du mit NumRow schon machst ( was auch die falsche Methode ist ), abfragen willst wieviel da gelöscht wurde und das geht nicht, weil die Daten an dieser stelle schon weg sind.

      Du müsstest erst die Anzahl besorgen und daraufhin die Einträge löschen, das dazu ohne WHILE Schleife.
    • Haha hab ich gestern gelacht. Ich hab gestern überlegt warum ich das überhaupt mache. Dann ist mir aufgefallen das ich voll die scheisse bau und genau das nicht funktioniert, wie du schon sagst.

      Jetzt funktioniert es auch, ohne Fehlermeldung:
      $ss = mysql_query("SELECT ID FROM daten WHERE ID = ".$_POST['id']);
      $result = mysql_num_rows($ss);
      if($result===1){

      $sdf = $_POST["id"];
      $sqlab1 = "DELETE FROM daten WHERE ID = " .$sdf;
      $res = mysql_query($sqlab1) or die ("MySQL-Fehler: " . mysql_error());
      echo " Datensatz erfolgreich gel&ouml;scht.";
      }
      else{
      echo "Datensatz nicht vorhanden!";
      }
    • Du willst die Anzahl der gelöschten Datensätze haben richtig?

      Dann hast du das Problem, dass mysql_num_rows nur die tatsächliche Ergebnismenge zurück gibt.
      Bei DELETE Anweisungen musst du stattdessen mysql_affected_rows verwenden.

      Aber wie du schon erkannt hast, macht es sowieso nicht viel Sinn :-)

      OT
      Ist das echt euer Gesprächsniveau? Jeder mag ja seine Ansicht haben, was das Beste ist.
      Die Frage war jedenfalls, was daran falsch ist, und nicht, welches Framework das Beste sein mag.
      Und über geistige Reife möchte ich schon gar nicht zu urteilen anfangen.

      An dieser Stelle danke an Well für seinen (ohne Flame) angebrachten Hinweis.
      /OT

      Greets
    • Gecko;308435 schrieb:

      Du willst die Anzahl der gelöschten Datensätze haben richtig?

      Dann hast du das Problem, dass mysql_num_rows nur die tatsächliche Ergebnismenge zurück gibt.
      Bei DELETE Anweisungen musst du stattdessen mysql_affected_rows verwenden.

      Aber wie du schon erkannt hast, macht es sowieso nicht viel Sinn :-)

      OT
      Ist das echt euer Gesprächsniveau? Jeder mag ja seine Ansicht haben, was das Beste ist.
      Die Frage war jedenfalls, was daran falsch ist, und nicht, welches Framework das Beste sein mag.
      Und über geistige Reife möchte ich schon gar nicht zu urteilen anfangen.

      An dieser Stelle danke an Well für seinen (ohne Flame) angebrachten Hinweis.
      /OT

      Greets


      Ja, war irgendwie fail von mir. Habe ich bereits gemerkt. Ich fand es eigentlich lustig xD Aber was soll man dazu sagen.