Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem beim Auslesen einer Datenbank

Einklappen

Neue Werbung 2019

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

  • Problem beim Auslesen einer Datenbank

    Hallo, ich (Neuling bei PHP) möchte eine Vokabeldatenbank erstellen und dann die Vokabeln abfragen lassen. So weit bin ich aber noch nicht.

    Ich habe per phpMyAdmin eine Tabelle mit ein paar Vokabeln (Spalten u.a. Deutsch, Englisch, …). Ich kann mir über php alle gespeicherten Vokabeln anzeigen lassen.

    Wenn ich aber per html eine Vokabel eingebe, um sie mir über php anzeigen zu lassen, komme ich zu keinem Ergebnis. Wenn ich eine vorhandene deutsche Vokabel eingebe, zeigt die Variable $num mir richtig an, dass 1 Treffer vorliegt:

    Ergebnis: 1

    Notice: Undefined index: Deutsch in C:\Apache24\htdocs\db_eingabe.php on line 21

    Notice: Undefined index: Englisch in C:\Apache24\htdocs\db_eingabe.php on line 22
    -


    Kann mir jemand einen Tipp geben, warum die Variable $dsatz anscheinend nicht gefüllt wird?

    Grüße

    Ulf



    PHP-Code:
    <DOCTYPE html><html><head><meta charset="utf-8"></head><body>
    <?php

       $con 
    mysqli_connect("","xy","xy");

       
    mysqli_select_db($con"vokabeln");

       
    $sql  "SELECT deutsch, englisch FROM vokabeln";
       
    $sql .= " WHERE deutsch LIKE '" $_POST["deutsch"] . "'";



       
    $res mysqli_query($con$sql);

       
    $num mysqli_num_rows($res);
       if (
    $num 0) echo "Ergebnis: " $num "<br>";
       else          echo 
    "Keine Ergebnisse <br>";

       while (
    $dsatz mysqli_fetch_assoc($res))
       {
         echo 
    $dsatz["Deutsch"] . " - "
            
    $dsatz["Englisch"] . "<br>";
       }  


       
    mysqli_close($con);
    ?>
    </body></html>

  • #2
    Groß und Kleinschreibung?
    bitcoin.de <- Meine Freelancerwährung

    Kommentar


    • #3
      Mach einfach mal ein dump
      PHP-Code:
       var_dump($dsatz); 
      dann siehst du , was drinne ist und wie die keys lauten. Ich tippe auch darauf, dass die Groß/Kleinschriebung nicht übereinstimmt.

      Desweiteren schau dir mal bitte mysql_real_escape_string() an!
      Dein Code ist sehr anfällig gegen SQL injection.

      Kommentar


      • #4
        Das war tatsächlich der Fehler.

        Ich habe bei einer funktionierenden Datei nur die Abfrage der Variablen hinzugefügt. Deshalb bin ich nicht darauf gekommen, dass ich "deutsch" im $_POST-Befehl klein, bei der Zuweisung von $dsatz jedoch groß geschrieben habe.

        Vielen Dank für die Hilfe bei diesem Anfängerfehler.

        Die anderen Hinweise gehe ich noch durch. Im Moment bin ich noch am Anfang, deshalb hoffe ich, dass ich mir später Anfälligkeiten auffallen, die ich beseitigen kann.

        Grüße

        Ulf

        Kommentar


        • #5
          Du solltest Variablennamen nicht kryptisch abkürzen. Und du solltest keinen Deutsch/Englisch-Mischmasch betreiben.

          Außerdem hat HTML-Ausgabe vor Datenbankabfragen nichts verloren. Beachte das EVA-Prinzip und mache Datenbankabfragen nur vor HTML-Ausgaben.

          Kommentar


          • #6
            PHP-Code:
            " WHERE deutsch LIKE '" $_POST["deutsch"] . "'"
            Warum LIKE wenn du keine Platzhalter hast?
            Nimm einfach das Gleichheitszeichen.


            Noch ein paar Links, die meine Vorredner nicht gebracht haben, damit du das schneller nachlesen/lernen kannst.
            EVA-Prinzip
            Kontextwechsel
            mysqli_real_escape_string

            offtopic:
            Dein Titelthema solltest du auch verbessern, da schon dort Fehler drin stecken. Gewöhne dir Sorgfalt an, das ist wichtig beim Programmieren.

            Kommentar


            • #7
              Danke!

              Kommentar


              • #8
                Ich habe das Buch "Einstieg und PHP 7 und MySQL 5.6" von Thomas Theis. Dort sind Beispiele angegeben, die ich versuche, mit meinem "Projekt" zu verbinden. Zusätzlich zu dem angegebenen Beispiel habe ich Ausgabebefehle eingefügt, um zu sehen, was mit den Variablen passiert.

                Ich werde mir auch noch die Links von protestix ansehen.

                Kommentar

                Lädt...
                X