Christina: Dynamische MySQL Abfrage

Hallo beienander HIIIILFEE?

Kann mir bitt jemand bei der fehlersuche helfen ich probiere es jetzt schon seit 2 Stunden und komme nicht weiter.
Was mache ich falsch???

if(isset($_POST["save"])){
$z = 0;
$query2 = "
  UPDATE ".$_GET["tabelle"]."
  SET bezeichnung = ".$_POST["bezeichnung"].", ".
  //Ausgaben der unterschiedlichen specs while 3
  while ($z <= $tol["specs"]-1){
  $var = $z+1;
    "specs".[$var] = $_POST["specs".[$var]].", ";
    $z++;
  }//end while 3
  ."bemerkung = ".$_POST["bemerkung"].", pdf = ".$_POST["pdf"].",  status = ".$_POST["status"].", package = ".$_POST["package"]."
  WHERE id = ".$_GET["bauteil_id"]."
  ;";
mysql_query($query2);
}

Die Folgende Fehlermeldung kommt immer:

Parse error: parse error, unexpected T_WHILE in /www/htdocs/almayo/bauteil/main_de/bearb_bau.php on line 38

Vielen Dank in voraus.
Christina

  1. Hallo,

    Parse error: parse error, unexpected T_WHILE in /www/htdocs/almayo/bauteil/main_de/bearb_bau.php on line 38

    Damit hast du alle Informationen die du benötigst, nämlich dass dein PHP-Parser

    while ($z <= $tol["specs"]-1){

    nicht verstanden hat, und zwar weil da eine spitze Klammer ist, wo sie nicht sein sollte. Ich kann mir wirklich nicht erklären, wieso du zwei Stunden brauchst, um eine solche Fehlermeldung nachzugooglen (hast du doch gemacht?), und mit den Erläuterungen dazu nichts anzufangen.

    Grüße aus Barsinghausen,
    Fabian

    1. Hi,

      Parse error: parse error, unexpected T_WHILE in /www/htdocs/almayo/bauteil/main_de/bearb_bau.php on line 38
      Damit hast du alle Informationen die du benötigst, nämlich dass dein PHP-Parser
      while ($z <= $tol["specs"]-1){

      nicht verstanden hat, und zwar weil da eine spitze Klammer ist, wo sie nicht sein sollte.

      Naja, Du hast maximal 6 Minuten gebraucht, um einen Fehler zu finden, der keiner ist, dafür aber den Fehler selbst nicht.
      Und aus der Fehlermeldung geht klar hervor, daß das while stört, nicht irgendetwas, was später kommt.

      $query2 = "
        UPDATE ".$_GET["tabelle"]."
        SET bezeichnung = ".$_POST["bezeichnung"].", ".
        //Ausgaben der unterschiedlichen specs while 3
        while ($z <= $tol["specs"]-1){

      Am Zeilenende der Zeile "SET" ist der Fehler - eine while-Schleife läßt sich nicht mit einem String verknüpfen.

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Danke für die schnelle Antwort aber wie kann ich dann das Ergebniss aus meiner while schleife in den query rein bringen.

        Gruß Christina

        1. Hi,

          Danke für die schnelle Antwort aber wie kann ich dann das Ergebniss aus meiner while schleife in den query rein bringen.

          Indem Du nicht die while-Schleife mit dem String verknüpfst, sondern die Strings, die Du innerhalb der Schleife ermittelst.

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Erst mal Danke.
      Aber ich bin ziemlich neu mit PHP.

      Funktioniert aber leider auch nicht wenn ich die Klammer raus nehme.

      Gruß Christina

      1. Hallo,

        Funktioniert aber leider auch nicht wenn ich die Klammer raus nehme.

        Nein, tut es nicht. Den (zugegeben) versteckten Hinweis auf die Lösung deines Problems hast du jedoch leider nicht gefunden: Finde heraus, was die Fehlermeldung bedeutet!

        Grüße aus Barsinghausen,
        Fabian

  2. Hi @all!

    Ich bin weder Profi in PHP, noch habe ich so ganz verstanden, was du willst.

    Jedoch glaube ich, folgende Fehler entdeckt zu haben:
    Mit den " und ' so durcheinander,
    du willst sicherlich echo specs... verwenden,

    Ich weiß nicht genau, ob folgendes deinem Zweck entspricht, aber da sagt mir
    mein PHP Programm wenigstens, dass das ein korrekter Code ist:

    if(isset($_POST["save"])){
     $z = 0;
     $query2 = " UPDATE
        ".$_GET['tabelle']."
         SET
        bezeichnung = ".$_POST['bezeichnung'].",
       ".
          while ($z <= $tol["specs"]-1){
           $var = $z+1;
            echo 'specs'.$var.' = ".$_POST['specs'.$var.''].",\n';
            $z++;
          }
         ."
        bemerkung = ".$_POST['bemerkung'].",
        pdf = ".$_POST['pdf'].",
        status = ".$_POST['status'].",
        package = ".$_POST['package']."
         WHERE
        id = ".$_GET['bauteil_id']."
         ;";
     mysql_query($query2);
    }

    Vielleicht oder hoffentlich hilft es dir ja weiter.

    MfG, Dennis.

    --
    Hinweise:
    Fragen zu Formularen beantwortet http://tutorial.riehle-web.com
    Meine HP: http://www.riehle-web.com
    1. Hi @all!

      du willst sicherlich echo specs... verwenden,

      nein Dennis, das glaubst du nicht!

      echo 'specs'.$var.' = ".$_POST['specs'.$var.''].",\n';

      Du glaubst:

      $variable = 'specs'...

      und willst die dann am Ende, nach der While Schleife ausgeben.

      MfG, Dennis.

      --
      Hinweise:
      Fragen zu Formularen beantwortet http://tutorial.riehle-web.com
      Meine HP: http://www.riehle-web.com
  3. Hello,

    anderes Thema:
    Du übernimmst in ein DB-Query, die aus einer externen Quelle stammen, ohne sie zu prüfen und abzusichern. Das ist eine schlimme Sicherheitslücke für Deine Datenbank. Bevor Du den Code ins Netz stellst, schau Dir bitte mal Threads und Manualseiten zu den Themen:

    • injektion, injection
    • magic_quotes
    • mysql_escape_string

    Und weiterhin viel Spaß

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen