Dringende Hilfe gesucht beim Praktikum(firebird/php))

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

  • #46
    Code:
    $database = new PDO("firebird:dbname=C:[B][COLOR="Red"]\\[/COLOR][/B]Apache2[B][COLOR="Red"]\\[/COLOR][/B]htdocs[B][COLOR="Red"]\\[/COLOR][/B]guestbook_entries.GDB;host=localhost","SYSDBA", "masterkey");
    Code ist jetzt lesbarer
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #47
      da kann ich aber nicht für garantieren das das auch stimmt.!
      also die variante die ich habe haut zumindest hin und gibt genau das aus was ich auch geschrieben habe.

      so is erledigt. die ausgabe ist angepasst und der Quelltext mit den neusten änderungen übernommen.
      wenn dir noch was einfällt schreib ruhig. spätestens morgen werd ich bestimmt eh wieder ins forum gehen. da gehts ja dann um die eintragung und das interagieren mit der datenbank
      Zuletzt geändert von ; 18.07.2011, 17:05.

      Kommentar


      • #48
        Zitat von Jiraiya Beitrag anzeigen
        da kann ich aber nicht für garantieren das das auch stimmt.!
        also die variante die ich habe haut zumindest hin und gibt genau das aus was ich auch geschrieben habe.
        Aber nur zufällig, weil PHP die Escape-Sequenzen \A, \h und \g nicht kennt und als Fallback so tut, als wäre es \\A, \\h und \\g. Sobald du aber in Unkenntnis dieses Zusammenhangs nach dem selben Prinzip eine Datenbank namens friends.gdb oder bestsellers.gdb öffnen willst, steht dann "...\friends.gdb" bzw. "...\bestsellers.gdb" dort und PHP wird es im ersten Falle als Steuerzeichen für Papiervorschub und im zweiten als Rückschritt erkennen – und das zu Recht!

        Fakt ist, Backslashes die als solche gemeint sind und keine Steuerzeichen darstellen, sollten unbedingt escaped werden. Mehr sag ich dazu jetzt einfach mal nicht. Wenn du der Meinung bist, das ist richtig so, glaub es halt und bleib bei diesem schlechten Stil.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #49
          das wollte ich damit garnicht zum audruck bringen. und wieder bin ich dir wirklich dankbar für die aufklärung. und ich hoffe du glaubst mir dass das nicht ironisch oder irgendwas gemeint ist.
          ich möchte das programmieren lernen und dass dazu ein schlechter stil am anfang nicht unnormal ist find ich zwar nicht schön aber auch nicht verwunderlich.
          aber so kann man ebenso lernen, oder besser gesagt so kann man lernen fehler auszuräumen, denn diese muss man oft erst machen um sie zu erkennen zukönnen.
          egal das gehört hier nicht hin find ich, sollte aber mal gesagt werden.
          ich bin und werde dir weiterhin dankbar für jede art von ratschlag und hilfe sein.

          Kommentar


          • #50
            einen wunderschönen guten Tag.
            wie versprochen(befürchtet) hab ich nun ein problem mit dem Update befehl.
            doch zuerst mal der quelltext, gößten teils übernommen von der seie vom letzten vollständigen post und abgewandelt

            PHP-Code:
            <?php
                $database 
            = new PDO("firebird:dbname=C:\\Apache2\\htdocs\\guestbook_entries.GDB;host=localhost","SYSDBA""masterkey");
                
            $database->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
                
                
            $author " ";
                
            $time =    0;
                
            $text " ";
                
                
            $sql "
                        UPDATE 
                            \"NEW_Table\" 
                        SET 
                            DATUM = '
            $time' , TEXT = '$text'
                        WHERE {AUTHOR = 
            $author
                        
                      "
            ;
                        
                
            $stmn $database->prepare($sql);
                
                
            $author " ";
                
            $time =    0;
                
            $text " ";
                
                
            $stmn->bindParam(":author" $author PDO::PARAM_STR);
                
            $stmn->bindParam(":time" $time PDO::PARAM_INT);
                
            $stmn->bindParam(":text" $text PDO::PARAM_STR);
                
                
            $q = array(
                        array(
                            
            "AUTHOR" => "MrX",
                            
            "TEXT" => "Hallo...",
                            
            "DATUM" => 123456789
                            
            ),
                        array(
                            
            "AUTHOR" => "MrZ",
                            
            "TEXT" => "Hallo...Ich bin Z",
                            
            "DATUM" => 1275554677
                        
            ),
                    );
                    
                    
                foreach(
            $q as $query)
                {
                    
            $author $query["AUTHOR"];
                    
            $text $query["TEXT"];
                    
            $time $query["DATUM"];
                    
                    
            $stmn->execute();
                }
                
            $stmn -> closeCursor();
                
                
            ?>
            und aml wieder diese wirre fehlermeldung:

            Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: -104 Dynamic SQL Error SQL error code = -104 Token unknown - line 3, column 5 'NEW_Table' ' in C:\Apache2\htdocs\guestebook 2.php:18 Stack trace: #0 C:\Apache2\htdocs\guestebook 2.php(18): PDO->prepare('?????UPDATE ???...') #1 {main} thrown in C:\Apache2\htdocs\guestebook 2.php on line 18

            ich habe auch schon die tabelle von dem bild um MrX und MrZ erweitert. jedoch kommt er ja garnicht bis zu diesem punkt.
            Zuletzt geändert von ; 19.07.2011, 10:31.

            Kommentar


            • #51
              NEW_Table ist mit Sicherheit keine String-Konstante, sondern soll einen Tabellennamen darstellen. Dass du für Tabellen- und Spaltennamen Double-Quotes nehmen musst, sagte ich bereits. Single-Quotes sind in SQL immer String-Begrenzer.

              Außerdem bitte Prepared Statements nutzen. Dein Code ist anfällig für SQL Injections.

              Edit: Ich sehe gerade, du willst ja selbst Prepared Statements nutzen, allerdings machst du es falsch. Bitte im PHP Handbuch die Beispiele ansehen, wie man Parameter bindet und vor allem welche Arten von Platzhaltern dabei zur Verfügung stehen.
              Zuletzt geändert von AmicaNoctis; 19.07.2011, 10:00.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #52
                ich habe die double quotes hinzugefügt aber genau jetzt mekkert der erst rum wegen string.

                Kommentar


                • #53
                  Natürlich tut er das, weil du damit den PHP-String beendest. Erinnerst du dich, wozu der Backslash da ist? Das wird hier jetzt langsam zu nem Grundlagenkurs und das ist nicht sinnvoll.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #54
                    okay ich hab also nun die " wieder mit einem backslash versehen. zuminest laut einer anleitung sollte das helfen. allerdings hat er immer noch ein problem:


                    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: -206 Dynamic SQL Error SQL error code = -206 Column unknown {AUTHOR At line 6, column 10 ' in C:\Apache2\htdocs\guestebook 2.php:18 Stack trace: #0 C:\Apache2\htdocs\guestebook 2.php(18): PDO->prepare('?????UPDATE ???...') #1 {main} thrown in C:\Apache2\htdocs\guestebook 2.php on line 18

                    ist das nun auf die Prepare statement angelegenheit zurückzuführen?
                    bevor ich weitere unnötige posts mache. wie richtig oder vertrauenswürde ist diese seite nach einem groben drüber schauen?
                    PDO(PHP Data Objects) | Coding-Bereich

                    ich mein ich hab bis jetzt das meiste an quelltext von dort. und das haut mir immer wieder diese fehler rein.

                    Kommentar


                    • #55
                      Diese Anleitung kann man nehmen, aber du hast es falsch übernommen. Die wirklich ultimative Referenz ist aber immer noch das PHP Handbuch. Dort wird es erklärt, beispielhaft gezeigt und von vielen Nutzern kommentiert.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #56
                        da stimm ich dir zu. es ist wirklich praktisch. mein problem bei dem wie auch bei dem beispiel bei der seite ist, dass ich durch die ähnlichkeit zwischen feldnamen und variablenamen(Feldname aus tabelle calories und variable calories) aus den beispiel, wahrscheinlich die beschriftung falsch lege. allerdings auch nicht erfahre wie sie richtig ist, da es so zu hauf gemacht wird.

                        dieses problem zieht sich durch den gesamten quelltext nicht nur für die bindParam... denn da ist es erklärt
                        Zuletzt geändert von ; 19.07.2011, 11:08.

                        Kommentar


                        • #57
                          Statt den SQL-Code mit eingebetteten Variablen zu verhunzen, musst du nur die Parameter in der Form :name einbauen. Genau diese Parameter benutzt du dann in bindParam().
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #58
                            und im array geb ich dann den variablen die dahinterstehenden werte?
                            wie kommen aber dann die werte in die felder der tabelle?

                            Kommentar


                            • #59
                              Zitat von Jiraiya Beitrag anzeigen
                              und im array geb ich dann den variablen die dahinterstehenden werte?
                              Welches Array? Edit: Achso, ja, sieht ganz so aus. bindParam übernimmt die Variablen immer per Referenz, daher werden spätere Änderungen/Neuzuweisungen berücksichtigt. Näheres erfährst du im Handbuch.

                              Zitat von Jiraiya Beitrag anzeigen
                              wie kommen aber dann die werte in die felder der tabelle?
                              Durch das Binden und den anschließenden Aufruf von execute(). Falls du das nicht meinst, stell bitte konkretere Fragen.
                              Zuletzt geändert von AmicaNoctis; 19.07.2011, 12:35.
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar


                              • #60
                                die antwort ist vollkommen ausreichend. so hab ich das zumindest schonmal verstanden. allerdings komm ich immer noch nicht vorran. hab jetzt noch mal ne stunde mir die backslash angelegenheit durch gelesen und den unterschied von " und ' und ` und komm trotzdem in dem statement nicht weiter.

                                könnte ich da nochmal deine Rat erfragen und bitte jetzt etwas expliziter.

                                momentane fassung:
                                PHP-Code:
                                    
                                    $sql 
                                "UPDATE `NEW_TABLE`
                                            SET `DATUM` = :time , `TEXT` = :text
                                            WHERE `AUTHOR` = :author 
                                            "
                                ;
                                    
                                $stmn =  $databe->prepare($sql):

                                $author " ";
                                $time 0;
                                $text" ";

                                    
                                $stmn->bindParam(":author" $author PDO::PARAM_STR);
                                    
                                $stmn->1bindParam(":time" $time PDO::PARAM_INT);
                                    
                                $stmn->bindParam(":text" $text PDO::PARAM_STR); 
                                Zuletzt geändert von ; 19.07.2011, 12:53.

                                Kommentar

                                Lädt...
                                X