Ankündigung

Einklappen
Keine Ankündigung bisher.

Abspeichern in Datenbank klappt nicht

Einklappen

Neue Werbung 2019

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

  • Abspeichern in Datenbank klappt nicht

    Hallo Kollegen,

    ich versuche mich gerade daran, einige Daten in einer bereits bestehenden MySQL Datenbank abzuspeichern:

    PHP-Code:
    function Mit_Datenbank_verbinden()

      {
         
    /* Verbindung aufnehmen*/
         
    $con mysqli_connect("","root");

         
    /* Datenbank auswählen */
         
    mysqli_select_db($con"360");

         
    /* SQL-Abfrage ausführen */
         
    $res mysqli_query($con"select * from feedbacktest_groß");


         
    /* Anzahl Datensätze ermitteln und ausgeben */
         
    $num mysqli_num_rows($res);
         echo 
    "Datensätze gefunden: $num<br />";

         
    /* Datensätze aus Ergebnis ermittlen und ausgeben */
         
    while ($dsatz mysqli_fetch_assoc($res))
         {
             echo 
    $dsatz["NachnameFG"]."<br />";
         }

         
    /* Verbindung schließen */
         
    mysqli_close($con);

       }

     function 
    Daten_abspeichern()
        {
          
    $eintrag mysql_query("INSERT INTO feedbacktest_groß (NachnameFG, VornameFG) VALUES ('Test1', 'Test2')");

          if(
    $eintrag == true)
             {
             echo 
    "Eintrag war erfolgreich.";
             }
          else
             {
             echo 
    "Fehler beim Eintragen.";
             }

        } 

    Mit_Datenbank_verbinden() funktioniert tadellos.

    Bei Daten_abspeichern() kommt aber immer der Fehler:

    Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\Armi
    Weiß jemand Rat?

    Danke
    Trafolino


  • #2
    Übersetzen wir mal: mysqli_query möchte 2 Parameter, du gibst der Funktion aber nur 1.

    Wo kann ich dir nicht sagen, dass das offensichtlich nicht der ganze Code ist. Aber du vermischt im hier gezeigten schon mal mysqli mit mysql.
    Windows Server gehören NICHT ins Internet!

    Dildo? Dildo!

    Kommentar


    • #3
      Hallo,

      Fehlermeldungen geben dir üblicherweise auch die Zeilennummer mit, die hilft das Problem zu finden.
      Sicher, dass der Fehler in Daten_abspeichern() auftritt? Da hast du nämlich kein mysqli_query(), dafür aber mysql_query()... was ein Schritt in die falsche Richtung ist.

      Zur Fehlermeldung: mysqli_query(); erwartet als ersten Parameter die Datenbankverbindung (bei dir $con), als 2. Parameter die Query die du ausführen lassen möchtest.

      Deine Funktion Mit_Datenbank_verbinden() macht übrigens zu viel, bzw ist der Name falsch gewählt. Innerhalb der Funktion öffnest du die Verbindung und schließt sie am Ende auch wieder. Besser wäre, wenn du die Datenbankverbindung aufbaust und dann als Rückgabewert zurückgibst. Für die anderen Aufgaben, die sie aktuell erfüllt, legst du dann andere Funktionen an.
      PHP-Code:
      function Mit_Datenbank_verbinden() 
        { 
          
      /* Verbindung aufnehmen*/ 
          
      $con mysqli_connect("","root"); 
          
      mysqli_select_db($con"360"); 
          return 
      $con;
         } 

       function 
      Daten_abspeichern($con
          { 
            
      $eintrag mysqli_query($con"INSERT INTO feedbacktest_groß (NachnameFG, VornameFG) VALUES ('Test1', 'Test2')"); 

            if(
      $eintrag == true
               { 
               return 
      "Eintrag war erfolgreich."
               } 
            else 
               { 
               return 
      "Fehler beim Eintragen."
               } 
          } 

      $con Mit_Datenbank_verbinden();
      $meldung Daten_abspeichern($con);
      echo 
      $meldung
      Ungefähr so. Schnell zusammengewürfelt, keine Fehler gesucht, soll nur die Richtung zeigen.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Hallo VPh,

        vielen Dank soweit - ist ja beachtlich, was man alles falsch machen kann.

        Ich habe jetzt Datenbank_verbinden geändert und wie von Dir empfohlen einen Rückgabewert eingefügt, mit dem ich dann die Funktion Daten_abspeichern aufrufe:

        PHP-Code:
        function Mit_Datenbank_verbinden()

          {
             
        /* Verbindung aufnehmen*/
             
        $con mysqli_connect("","root");

             
        /* Datenbank auswählen */
             
        mysqli_select_db($con"360gradfeedback");

             
        /* SQL-Abfrage ausführen */
             
        $res mysqli_query($con"select * from feedbacktest_groß");


             
        /* Anzahl Datensätze ermitteln und ausgeben */
             
        $num mysqli_num_rows($res);
             echo 
        "Datensätze gefunden: $num<br />";

             
        /* Datensätze aus Ergebnis ermittlen und ausgeben */
             
        while ($dsatz mysqli_fetch_assoc($res))
             {
                 echo 
        $dsatz["NachnameFG"]."<br />";
             }

             
        /* Verbindung als Rückgabewert zurückgeben */
             
        return $con;

             }

         function 
        Daten_abspeichern($Verbindung)
            {
              
        $eintrag mysqli_query($Verbindung"INSERT INTO feedbacktest_groß (NachnameFG, VornameFG) VALUES ('Test1', 'Test2')");

              if(
        $eintrag == true)
                 {
                 echo 
        "Eintrag war erfolgreich.";
                 }
              else
                 {
                 echo 
        "Fehler beim Eintragen.";
                 }

            } 
        Der Aufruf sieht so aus:

        PHP-Code:
                 $con Mit_Datenbank_verbinden();
                 
        Daten_abspeichern($con); 
        Jetzt läuft der Code einwandfrei durch, allerdings erscheint immer die Fehlermeldung "Fehler beim Eintragen", die ich ja programmiert habe, wenn $eintrag unwahr ist.

        D.h. Verbindung wird korrekt aufgenommen, aber ein Eintrag erfolgt nicht. Woran kann das denn liegen? Ich muss dazu sagen, dass die Datenbank 360gradfeedback mehr als nur zwei Spalten hat und ich zu Testzwecken nur zwei Eingaben machen will. Aber das dürfte doch nicht der Fehler sein, oder?

        Danke im voraus!
        Trafolino

        Kommentar


        • #5
          Zitat von TRAFOLINO Beitrag anzeigen

          D.h. Verbindung wird korrekt aufgenommen, aber ein Eintrag erfolgt nicht. Woran kann das denn liegen? Ich muss dazu sagen, dass die Datenbank 360gradfeedback mehr als nur zwei Spalten hat und ich zu Testzwecken nur zwei Eingaben machen will. Aber das dürfte doch nicht der Fehler sein, oder?

          Danke im voraus!
          Trafolino
          Ich glaube, Du verwechselst massiv die Begriffe 'Datenbank' und 'Tabelle'.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            - mit echo die query ausgeben
            - mysqli_error() ausgeben lassen
            - und prüfen wo deine Werte herkommen, vermute du bis ev. sql-injections gefährdet. http://php-de.github.io/jumpto/sql-injection/
            - und "sonderzeichen" ß in tabellen-/feldnamen würde ich vermeiden.
            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

            Lädt...
            X