A1B2D4: Daten in My Sql speichern

Hallo Leute,
das ist hier mein erster Beitrag. Ich hab ein Problem mit meiner Seite und zwar kann ich keine Daten per Formulareingabe in meine SQL Tabelle speichern.

  
<?php  
  
    include_once 'includes/config.php';  
    include_once 'includes/db.php';  
  
  
$verbindung = mysql_connect ("localhost","abd", "******")  
or die ("keine Verbindung möglich.  
 Benutzername oder Passwort sind falsch");  
  
mysql_select_db("abd_abiso")  
or die ("Die Datenbank existiert nicht.");  
  
  
    //Neue Instanz der Klasse erzeugen  
    $mydb = new DB_MySQL('localhost',$dbname,$dbusername,$dbpassword);  
  
        if (isset($_GET["name"])&&isset($_GET["wohnort"])&&isset($_GET["strasse"])&& isset($_GET["plz"])&& isset($_GET["plz"])&& isset($_GET["benutzername"])&& isset($_GET["passwort"]))  
        {  
  
                $Name= $_POST["name"];  
                $Wohnort= $_POST["wohnort"];  
                $Strasse= $_POST["strasse"];  
                $PLZ= $_POST["plz"];  
                $Benutzername= $_POST["benutzername"];  
                $Passwort= $_POST["passwort"];  
  
                $con = mysql_connect ("localhost","abd", "*******");  
  
                $sql = " INSERT iNTO `Kunde`(Kundennummer, Name, Wohnort, Strasse, PLZ, Betreuer, Benutzername, Passwort)  
                VALUES  
                ([NULL] ,  [Name],  [Wohnort],  [Strasse],  [PLZ], [NULL] ,  [Benutzername],  [Passwort])";  
  
                if($result) {  
                echo("<br>Data Input OK");  
                } else {  
                echo("<br>Data Input Failed");  
                }  
  
                $mydb->disconnect();  
        }  
  
        if ($button==" Registrieren ") {  
                $sql  
              }  
  
         ?>  

Ich hab rumprobiert aber bin immer gescheitert.
Kann mir jemand helfen? Danke!

  1. Tach!

    das ist hier mein erster Beitrag.

    ... und gleich werde ich ihn zerpflücken. Sei nicht traurig!

    include_once 'includes/db.php';

    Du scheinst da eine Datenbank-Klasse verwenden zu wollen.

    $verbindung = mysql_connect ("localhost","abd", "******")
    or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");

    Und dann nimmst du die herkömmlichen mysql-Funktionen (die zugunsten von mysqli oder PDO am Aussterben sind).

    Ein "or die()" ist auch nichts, was man im Produktivsystem haben will. Das hinterlässt dem Besucher eine kaputte Seite und treibt ihn womöglich zur Konkurrenz.

    //Neue Instanz der Klasse erzeugen
        $mydb = new DB_MySQL('localhost',$dbname,$dbusername,$dbpassword);

    Und was machst du damit? Zusätzlich zur herkömmlichen Methode?

    $Name= $_POST["name"];
                    $Wohnort= $_POST["wohnort"];
                    $Strasse= $_POST["strasse"];
                    $PLZ= $_POST["plz"];
                    $Benutzername= $_POST["benutzername"];
                    $Passwort= $_POST["passwort"];

    Das Umkopieren ist unnötig. Die Werte stehen bereits gebrauchsfertig im $_POST-Array.

    $con = mysql_connect ("localhost","abd", "*******");

    Noch eine Verbindung?

    $sql = " INSERT iNTO Kunde(Kundennummer, Name, Wohnort, Strasse, PLZ, Betreuer, Benutzername, Passwort)
                    VALUES
                    ([NULL] ,  [Name],  [Wohnort],  [Strasse],  [PLZ], [NULL] ,  [Benutzername],  [Passwort])";

    if($result) {
                    echo("<br>Data Input OK");
                    } else {
                    echo("<br>Data Input Failed");
                    }

    Tust du auch irgendetwas mit dem Statement im String? Ein String allein macht jedenfalls nichts in der Datenbank. Syntaktisch wäre das Statement auch nicht für MySQL geeignet. Es sei denn, deine Datenbank-Klasse macht daraus noch etwas - wenn du sie denn verwenden würdest.

    Ansonsten schau dir bitte den Kontextwechsel-Artikel an.

    $mydb->disconnect();

    Das schließt die Verbindung der DB-Klasse, aber die anderen bleibe wie sie sind. Es ist nicht notwendig, die Verbindungen zu schließen, PHP macht das am Script-Ende sowieso.

    dedlfix.

    1. Danke für deine Antwort dedlfix !

      Alsooo

      Ich hab mein PHP Code geändert und benutze 2 seiten. Ein mal insert.php und ein mal die normale Anmelde Seite. Die Verbindung zur Datenbank wird hergestellt doch es tritt eine Fehlermeldung auf.

      Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' , , , , )' at line 2

      Meine insert.php Datei:

        
      <?php  
      $con=mysqli_connect("localhost","abd_abiso","******","abd_abiso");  
      // Check connection  
      if (mysqli_connect_errno())  
        {  
        echo "Failed to connect to MySQL: " . mysqli_connect_error();  
        }  
        
      $sql="INSERT INTO `Kunde`(`Kundennummer`, `Name`, `Wohnort`, `Strasse`, `PLZ`, `Betreuer`, `Benutzername`, `Passwort`)  
      VALUES  ($Name, $Wohnort, $Strasse, $PLZ, $Benutzername, $Passwort)";  
        
      if (!mysqli_query($con,$sql))  
        {  
        die('Error: ' . mysqli_error($con));  
        }  
      echo "1 record added";  
        
      mysqli_close($con);  
      ?>  
      
      
      1. In den Werten $Name, $Wohnort, $Strasse, $PLZ, $Benutzername, $Passwort steht ja auch nix mehr drin, kein Wunder bleiben nur die Kommas übrig.
        Du solltest dir ansehen was in deinem SQL tatsächlich steht (indem du es zum Browser ausgibst), dann kommst du auf solche Dinge viel schneller.

      2. Tach!

        <?php
        $con=mysqli_connect("localhost","abd_abiso","******","abd_abiso");
        // Check connection
        if (mysqli_connect_errno())
          {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }

        Der Fehlermeldungstext ist nicht für die Besucher deiner Seite interessant, sondern den musst du als Administrator sehen, auch im Nachhinein. Du solltest ihn irgendwo hinmailen oder in eine Log-Datei schreiben. Zudem ist es nicht sinnvoll, normal weiterzumachen, wenn ein Fehler auftritt. Du solltest nun in ein Alternativprogramm (else) wechseln und dem Anwender so gut es ohne Datenbank geht, zu seinem Ziel führen.

        $sql="INSERT INTO Kunde(Kundennummer, Name, Wohnort, Strasse, PLZ, Betreuer, Benutzername, Passwort)
        VALUES  ($Name, $Wohnort, $Strasse, $PLZ, $Benutzername, $Passwort)";

        Ohne Umkopieren hast du nun diese Variablen nicht mehr. Stattdessen solltest du direkt auf $_POST zugreifen, die Werte aber nicht direkt sondern über mysqli_real_escape_string() einfügen. Sonst baust du dir, wie im bereits verlinkten Kontextwechsel-Artikel zu lesen, im besten Fall Syntaxfehler (wenn ein ' in den Daten vorkommt) oder gar eine SQL-Injection-Lücke ein.

        dedlfix.