Syntax falsch ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Syntax falsch ?

    Hallo zusammen,

    Irgendwie bekomme ich es nicht auf die Reihe vorhanden Daten in meiner SQL DB upzudaten. Um folgenden Code geht es:

    PHP-Code:
    <?php


    $dbcnx 
    = @mysql_connect("localhost""dbuser""pw");
    mysql_select_db("datenbankname");

    if(
    $submit == "Speichern")
    {


    $sql "UPDATE tabelle SET
    Titel='
    $Titel',
    Verliehen='
    $Verliehen',
    Multiplayer='
    $Multiplayer',
    Durchgespielt='
    $Durchgespielt',
    Datum=CURDATE(),
    WHERE ID='
    $changetitel'";
    if(@
    mysql_query($sql)) {
    echo(
    "<p>Titel wurde geupdatet</p>");
    }else{
    echo(
    "<p>Ein Fehler beim updaten ist aufgetreten: " mysql_error() . "</p>");
    }
    }
    ?>

    Stress bekomme ich immer bei WHERE ID ='$changetitel'";

    Ich habe so das dumpfe Gefühl das die Syntax da irgendwie super falsch ist. Kann mir da jemand von euch helfen ?


    MFG

    Deadeye

    EDIT:
    [php]-tags by Abraxax

  • #2
    benutze doch mal mysql_error, bzw. nimm das @ vor dem query weg. dann weisst du auch, was du falsch gemacht hast.

    ps verschieb nach sql
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Re: Syntax falsch ?

      bitte benutze die php-tags des forums!

      Original geschrieben von Deadeye
      Stress bekomme ich immer bei WHERE ID ='$changetitel'";
      und wie sieht der stress aus?

      eine antwort in form einer fehlerausgabe wäre hier jetzt angebracht....
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Ja die Fehlermeldung sieht einfach nur so aus :

        PHP-Code:
        Ein Fehler beim updaten ist aufgetretenYou have an error in your SQL syntax near 'WHERE ID=''' at line 7 
        Das ist auch schon alles.


        Sorry für falsches Forum und das ich kein PHP Tag benutzt hab.

        MFG

        Deadeye

        Kommentar


        • #5
          so wie es aussieht ist $changetitel nicht definiert.

          wo wird denn $changetitel definiert?
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Eigentlich soll changetitel über den Browser übergeben werden.
            In der URL wird dann auch eine bestimmte ID übergeben.
            Das funktioniert scheinbar eh nicht ist mir aber auch erstmal egal

            Ich kann dem Script auch explizit sagen:


            PHP-Code:
            $changetitel="5"
            Dann heißt die Fehlermeldung:

            PHP-Code:
            ein Fehler beim updaten ist aufgetreten
            You have an error in your SQL syntax near 'WHERE ID='5'' at line 7 
            Sprich egal wie es klappt net.

            MFG

            Deadeye

            Kommentar


            • #7
              vor dem where ist ein komma zuviel.
              wenn du per browser vars übergibst, musst du $_GET['varname'] benutzen
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                Vielen Dank erstmal.

                Das mit dem Komma war schon einmal ein großer Schritt nach vorne.
                Wenn ich ihm jetzt explizit ein bestimmt ID sage dann klappts auch. Also das Komma war schuld.

                Was dein Vorschlag mit $_GET betrifft so klappt das net.

                Er übergibt mir aber eine Variable.
                In meiner Adressleiste vom Browser steht z.B. folgendes:
                http://localhost/test/eintrag2.php?changetitel=7

                Hab dann auch mal einfach

                echo "$changetitel"; gemacht ich erhalte dann auch schön brav eine ID.

                Ich habe jetzt folgendes geschrieben:

                PHP-Code:
                WHERE ID='$_GET['changetitel']'"; 
                Wenn ich das mache kommt folgendes:
                Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in d:\hp\test\eintrag2.php on line 98


                Wenn ich aber fogendes eingeben:
                PHP-Code:
                WHERE ID='$_GET[changetitel]'"; 
                Sprich changetitel nicht in Hochkommas setze dann passiert garnichts.
                Er sagt dann schön lieb Titel wurde geupdate was aber leider nicht zutrifft. Er macht nämlich leider nix.
                Der Datensatz bleibt der alte.

                Hab ich jetzt wieder so ein eledes Syntax Problem oder habe ich da was vom Prinzip her net kapiert.

                THX für Hilfe

                MFG

                Deadeye

                Kommentar


                • #9
                  entweder so ....
                  PHP-Code:
                  " .... WHERE ID='{$_GET[changetitel]}'"
                  ... oder besser so ...
                  PHP-Code:
                  " .... WHERE ID='".$_GET[changetitel]."'"
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Leider nicht.

                    Er sagt mir zwar Titel wurde geupdatet. Doch leider passiert mal wieder nix.

                    Noch eine Idee ?


                    MFG

                    Deadeye

                    Kommentar


                    • #11
                      das du die anderen felder auch mit $_GET machen musst, weisst du aber schon. oder?

                      $_GET['Titel'] , $_GET['Verliehen'] usw.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Ne gewußt habe ich das net .

                        Aber auch egal wenn ich das so mache tut sich immer noch nix. So schauts jetzt aus:


                        PHP-Code:
                        ...

                        Titel='".$_GET[Titel]."',
                        Verliehen='".$_GET[Verliehen]."',
                        Multiplayer='".$_GET[Multiplayer]."',
                        Durchgespielt='".$_GET[Durchgespielt]."',
                        Datum='CURDATE()'
                        WHERE ID='".$_GET[changetitel]."'";
                        if(@mysql_query(
                        $sql)) {
                        echo("
                        <p>Titel wurde geupdatet</p>");

                        ... 
                        Ich persönlich hab weiter das Gefühl das er bei
                        WHERE ID='".$_GET[changetitel]."'"; nicht wircklich etwas mit der Variable macht.

                        MFG

                        Deadeye
                        Zuletzt geändert von Deadeye; 21.01.2004, 13:22.

                        Kommentar


                        • #13
                          Mal anderst gefragt.

                          register_globals ist bei mir auf "on" muss das net eigentlich auf "off" sein damit $_Get ... überhaupt geht ?

                          MFG

                          Deadeye

                          Kommentar


                          • #14
                            egal wie es eingestellt ist. _GE(h)T immer.


                            gib mal deine query mit echo aus.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Hallo

                              Habe über Wochenende mal versucht das Problem zu lösen . Hat leider nix gebracht. Einzig was ich jetzt weiß ist folgendes.

                              Auf meine Werte die ich über den Browser erhalte kann ich nur zugreifen wenn ich im HTML Bereicht des Dokument bin.
                              Mit z.B.
                              <?=$ID?>

                              Dann gibt er mir schön den Wert aus den ich erhalten habe.

                              Wenn aber meine großer PHP Block losgeht, sprich eben jenen Teil den ich im ersten Beitrag gepostet habe, geht nix mehr. Mir ist nicht ganz klar warum er da nicht mehr an die Variable kommt. Hab es mit $_GET[] versucht und auch mit POST.

                              Es geht einfacht nicht.


                              Ich poste daher mal den gesamten Code vom Dokument da ich mir net mehr helfen kann. Da ich fast glaube das mein Formular so net okay ist. Besonderst was den senden Button betrifft vielleicht ist da der Hund begraben.

                              PHP-Code:
                              <HTML><HEAD>
                              <BODY text=#000000 bgColor=#8998a5>




                              <form action="<?=$PHP_SELF?>" method="post">
                              <p>Titel updaten <?=$ID?>:<br>
                                                           <br>Titel <br>
                                                           <input type="text" name="Titel" value="<?=$Titel?>">
                                                   

                                                           <br>Verliehen<br>               
                                                           <input type="text" name="Verliehen" value="<?=$Verliehen?>">
                                              
                                                            <br>Multiplayer Modus?:  Ja 
                                                            <input type="radio" name="Multiplayer" value="Ja" id="Multiplayer">
                                                            Nein 
                                                            <input type="radio" name="Multiplayer" value="Nein" id="Multiplayer">
                                                            
                                                          
                                                           
                                                            <br>Durchgespielt?: Ja 
                                                            <input type="radio" name="Durchgespielt" value="Ja" id="Durchgespielt">
                                                            Nein 
                                                            <input type="radio" name="Durchgespielt" value="Nein" id="Durchgespielt">



                                                      <input type="hidden" name="id" value="<?=$changetitel?>">
                                                      <br><br>
                                                      <input type="submit" name="submit" value="Speichern">



                              </form>


                              <?


                              $dbcnx = mysql_connect("localhost", "datenbankname", "passwort");
                              mysql_select_db("datenbankname");

                              $changetitel = $_POST['ID'];

                              if($submit == "Speichern")
                              {

                              $sql = "UPDATE baum SET
                              Titel='".$_GET['Titel']."',
                              Verliehen='".$_GET['Verliehen']."',
                              Multiplayer='".$_GET['Multiplayer']."',
                              Durchgespielt='".$_GET['Durchgespielt']."',
                              Datum='CURDATE()'
                              WHERE ID='".$_GET['ID']."'";
                              if(@mysql_query($sql)) {
                              echo("<p>Titel wurde geupdatet <?=$_GET[ID]?></p>");
                              }else{
                              echo("<p>Ein Fehler beim updaten ist aufgetreten: " . mysql_error() . "</p>");
                              }
                              }
                              ?>

                              </BODY></HTML>

                              Also Jungs ihr seit meine letzte Hoffnung


                              MFG

                              Deadeye

                              Kommentar

                              Lädt...
                              X