Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus Formular in DB schreiben

Einklappen

Neue Werbung 2019

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

  • Daten aus Formular in DB schreiben

    Ich habe mal folgendes zusammengeschrieben:

    PHP-Code:
    try {
                    
    $pdotransaction = new PDO('mysql:host=localhost;dbname=autorenprojekt''root''root');
                    
    $pdotransaction->query("set names 'utf8'");
    }
    catch(
    PDOException $e)
    {
                    die(
    $e->getMessage());
    }

     
     
     
            
    # pdo - easy way to insert form values into database
     
     
     
                    // query
                    
    $sql "INSERT INTO buecher (id, username, buchtitel, link) VALUES ('NULL', $username$titel$link)";
                    
    $stm $pdotransaction->prepare($sql);
                    
    $insert $stm->execute($data);
     
                    if( ! 
    $insert ) die('insert failed !'); 
    Doch wird kein Wert in die Datenbank geschrieben.

    Die einzige Ausgabe: insert failed !

    Wo liegt hierbei der Fehler?



    lg mmoerth

  • #2
    Strings müssen in mysql von Hochkommas umgeben sein.
    Prepared Statements werden anders genutzt, bzw du nutzt ihren Vorteil nicht.
    Gibt es $data?

    Ehrlich gesagt, das ist nichts wofür man in ein Forum posten sollte. Investier doch lieber mal eine Stunde um selbst herauszufinden warum etwas nicht funktioniert.
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Investier doch lieber mal eine Stunde um selbst herauszufinden warum etwas nicht funktioniert.
      Debugging-Leitfaden dafür:

      PHP: http://php-de.github.io/jumpto/leitfaden/
      SQL: http://php-de.github.io/jumpto/sql/

      LG
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        $data sollte eigentlich $sql sein. Habe das mal korrigiert.
        Nun habe ich die Strings in Hochkommas umgeben. Das heißt, dass der Abschnitt nun so aussieht:

        PHP-Code:
        $sql "INSERT INTO buecher ('id', 'username', 'buchtitel', 'link') VALUES ('NULL', $username$titel$link)";
                        
        $stm $pdotransaction->prepare($sql);
                        
        $insert $stm->execute($sql); 
        Oder habe ich einen Denkfehler?

        Kommentar


        • #5
          PHP-Code:
          "INSERT INTO buecher ('id', 'username', 'buchtitel', 'link') VALUES ('NULL', $username$titel$link)" 
          Nicht die Spaltennamen in Strings, die (maximal) in `backticks`. Nur die Strings. Schau dir mal Beispiele genau an, oder nutze besser die schon ewähnten prep. Statements.
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Neben dem bereits gesagten zu den Anführungszeichen und der Tatsache dass du das Prinzip von prepared Statements noch nicht verstanden hast:

            Zitat von mmoerth Beitrag anzeigen
            PHP-Code:
            $sql "INSERT INTO buecher ('id', 'username', 'buchtitel', 'link') VALUES ('NULL', $username$titel$link)"
            Als Wert für die Spalte »id« musst du NULL übergeben, nicht den String »NULL« (also ohne Anführungszeichen), alternativ die Spalte einfach ganz weg lassen.

            Kommentar


            • #7
              Vor allem scheinst du zu versuchen, PHP Variablen ($username, $titel, $link) im SQL String einzufügen... PHP müsste das bereits anmeckern (error_reporting erhöhen!), wenn es diese Variablen nicht gibt. Platzhalter für prepared statements sollte man definitiv anders nennen...
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar

              Lädt...
              X