Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank Input

Einklappen

Neue Werbung 2019

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

  • Datenbank Input

    Hallo zusammen,

    irgendwo ist das noch was faul ? Kann jemand helfen bitte ?
    Ich will mir nur ein paar Daten in die Tabelle rein schreiben.
    Die DB-Verbindung ist OK (ich kann Datena us der DB rauslesen).

    Beim Dateneingabe bzw. Speichern in die DB kommt auch keine Fehlermeldung, aber ich sehe keine neue Daten in der Tabelle gespeichert
    Wo ist hier der Wurm ?

    Danke & Grüße
    Loren

    <?php
    require_once ('dbConfig.php');
    $db_link = mysqli_connect (
    MYSQL_HOST,
    MYSQL_BENUTZER,
    MYSQL_KENNWORT,
    MYSQL_DATENBANK
    );

    // Check connection
    if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $pName = $_POST["mFirstname"];
    $pVorname = $_POST["mSurename"];
    $pStreet = $_POST["mStreet"];
    $pCity = $_POST["mCity"];
    $pAge = $_POST["mAge"];

    $myEntries = "INSERT INTO blueoceantestTAB ('Name', 'Vorname', 'Strasse', 'Wohnort', 'Alter')
    VALUES ('$pName', '$pVorname', '$pStreet', '$pCity', 55)";

    $eintragen = mysql_query($myEntries);
    //mysqli_query($db_link,


    //mysqli_close($db_link);

    header('http://localhost/testng/readDB.php');

    ?>

  • #2
    PHP-Code:
    $eintragen mysql_query($myEntries); 
    Falsche Funktion.

    Du solltest dir das Thema SQL-Injection ansehen. http://php-de.github.io/jumpto/sql-injection/
    [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
      Zitat von lorenlai Beitrag anzeigen
      $myEntries = "INSERT INTO blueoceantestTAB ('Name', 'Vorname', 'Strasse', 'Wohnort', 'Alter')
      VALUES ('$pName', '$pVorname', '$pStreet', '$pCity', 55)";

      Man speichert nicht das Alter. Außerdem ist das ein Schlüsselwort.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Feldnamen gehören auch nicht in Hochkommata... die Datenbank erwartet an dieser Stelle einen Bezeichner, keinen String.

        Als ganz besonderes Feature erzeugt das jedoch keinen Fehler... allerdings bekommt man auch nicht die Werte, die man erwartet hätte
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Zitat von lstegelitz Beitrag anzeigen

          Als ganz besonderes Feature erzeugt das jedoch keinen Fehler...

          Made my day
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Danke

            Hallo zusammen,

            danke für die schnelle Hilfe !

            VG
            Loren

            Kommentar


            • #7
              Hallo nochmals,

              irgendwie kriege ich das nicht hin. Kann jemand da ein Beispiel machen bitte ?

              ...
              $pName = "Anderson";
              $pVorname = "Charlene";
              $pStreet = "Sonnenstr.";
              $pCity = "Fankenthal";
              $pAge = "18";


              // WIESO ERKENNT ER HIER NICHT $pName, $pVorname, $pStreet, $pCity, $pAge ???

              $sql = 'INSERT INTO blueoceantestTAB '.
              '(tName, tVorname, tStrasse, tWohnort, tAlter) '.
              'VALUES ( $pName, $pVorname, $pStreet, $pCity, $pAge )';

              $sql = 'INSERT INTO blueoceantestTAB '.
              '(tName, tVorname, tStrasse, tWohnort, tAlter) '.
              'VALUES ( $pName, $pVorname, $pStreet, $pCity, $pAge )';

              // SO MAG ER AUCH NICHT !!! ((

              $sql = "INSERT INTO blueoceantestTAB (tName, tVorname, tStrasse, tWohnort, tAlter) VALUES ( $pName, $pVorname, $pStreet, $pCity, $pAge );

              Kann jemand mir nochmals helfen bitte ?

              Danke & VG
              Loren

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Als ganz besonderes Feature erzeugt das jedoch keinen Fehler...
                Das ist ein Syntaxfehler das endet definitv in einem Fehler.

                @lorenlai füg nach mysqli_connect() das ein:

                PHP-Code:
                mysqli_report(MYSQLI_REPORT_ALL); 
                Damit ist mysqli kommunikativer und löst direkt PHP Fehler aus wenn mit dem Query was nicht stimmt.

                PS: wenn du mysqli_ verwendest kannst du nicht mysql_ Funktionen verwenden und um Zeichenketten gehöhren Quotes.

                Kommentar


                • #9
                  Zitat von erc Beitrag anzeigen
                  Das ist ein Syntaxfehler das endet definitv in einem Fehler.
                  Bei Tabellen ja, das erzeugt einen Fehler. Nicht so bei Feldnamen...
                  Probiers einfach mal aus
                  Code:
                  SELECT 'test' from tabelle; # tabelle muss existieren
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Hallo Erc & Istegelitz,

                    erst mal dankeschön für die Hilfe.

                    Es funktioniert wenn ich direkt die Strings eingebe, also etwa so ...

                    $sql = 'INSERT INTO blueoceantestTAB '.
                    '(tName, tVorname, tStrasse, tWohnort, tAlter) '.
                    'VALUES ( "Anderson", "Charlene", "Sonnenstr.", "Frankenthal", "18" )';


                    Aber, wenn ich über die Variable mache, also etwa so ...

                    $pName = "Anderson";
                    $pVorname = "Charlene";
                    $pStreet = "Sonnenstr.";
                    $pCity = "Frankenthal";
                    $pAge = "18";


                    $sql = 'INSERT INTO blueoceantestTAB '.
                    '(tName, tVorname, tStrasse, tWohnort, tAlter) '.
                    'VALUES ( $pName, $pVorname, $pStreet, $pCity, $pAge )';

                    .. dann kommt die Fehlermeldung:

                    Could not enter data: Unknown column '$pName' in 'field list'


                    mein ganzer CODE !!!
                    -------------------------------------------------
                    <?php

                    $dbhost = 'localhost';
                    $dbuser = 'root';
                    $dbpass = '';

                    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

                    mysqli_report(MYSQLI_REPORT_ALL);

                    if(! $conn )
                    {
                    die('Could not connect: ' . mysql_error());
                    }


                    $pName = $_POST["mFirstname"];
                    $pVorname = $_POST["mSurename"];
                    $pStreet = $_POST["mStreet"];
                    $pCity = $_POST["mCity"];
                    $pAge = $_POST["mAge"];

                    /*
                    $pName = "Anderson";
                    $pVorname = "Charlene";
                    $pStreet = "Sonnenstr.";
                    $pCity = "Frankenthal";
                    $pAge = "18";
                    */

                    // Die parameterübergabe funktioniert es, sieht gut aus !!!
                    echo "hallo1=" . $pName;
                    echo "hallo2=" . $pVorname;
                    echo "hallo3=" . $pStreet;
                    echo "hallo4=" . $pCity;
                    echo "hallo5=" . $pAge;

                    // Ab hier macht es Probleme
                    $sql = 'INSERT INTO blueoceantestTAB '.
                    '(tName, tVorname, tStrasse, tWohnort, tAlter) '.
                    'VALUES ( $pName, $pVorname, $pStreet, $pCity, $pAge )';

                    mysql_select_db('blueoceantestDB');
                    $retval = mysql_query( $sql, $conn );
                    if(! $retval )
                    {
                    die('Could not enter data: ' . mysql_error());
                    }
                    echo "Entered data successfully\n";
                    mysql_close($conn);
                    ?>

                    Kommentar


                    • #11
                      ahh, es hat sich erledigt !!!

                      Habe jetzt so gemacht !!!

                      $sql = "INSERT INTO blueoceantestTAB (tName, tVorname, tStrasse, tWohnort, tAlter)
                      VALUES('".mysql_escape_string($_POST['mFirstname'])."',
                      '".mysql_escape_string($_POST['mSurename'])."',
                      '".mysql_escape_string($_POST['mStreet'])."',
                      '".mysql_escape_string($_POST['mCity'])."',
                      '".mysql_escape_string($_POST['mAge'])."');";


                      Danke euch allen trotzdem !

                      VG
                      Loren

                      Kommentar


                      • #12
                        Zitat von lstegelitz Beitrag anzeigen
                        Bei Tabellen ja, das erzeugt einen Fehler. Nicht so bei Feldnamen...
                        Probiers einfach mal aus
                        Code:
                        SELECT 'test' from tabelle; # tabelle muss existieren
                        Das ist kein Feldname, das ist ein Literal. In der SELECT Klausel kann sowas natürlich stehen (und unzähliges mehr), aber nicht an einer Stelle wo eine Feldliste erwartet wird. Das geht so nicht mal durch den Lexer.

                        @lorenlai Die mysql_ und mysqli_ Funktionen sind verschiedene Dinge. Wobei mysql_ veraltet ist und nicht mehr Benutzt werden sollte, das wird demnächst aus PHP entfernt.

                        Kommentar


                        • #13
                          Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
                          Choosing an API
                          Warum man mysql* generell nicht (mehr) nutzen sollte.
                          Wie man von mysql* auf PDO umsteigt
                          Wissenswertes zum Thema SQL-Injection

                          Kommentar

                          Lädt...
                          X