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

  • TRAFOLINO
    hat ein Thema erstellt Abspeichern in Datenbank klappt nicht.

    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

  • hausl
    antwortet
    - 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.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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'.

    Einen Kommentar schreiben:


  • TRAFOLINO
    antwortet
    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

    Einen Kommentar schreiben:


  • VPh
    antwortet
    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.

    Einen Kommentar schreiben:


  • trollface
    antwortet
    Ü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.

    Einen Kommentar schreiben:

Lädt...
X