jens: Schreiben in MySQL-Tabelle funktioniert nicht

Hallo miteinander,

Ich arbeite gerade an einem Projekt mit einem Mitgliederbereich. Ich habe dafür eine Anmeldeseite mit zahlreichen Feldern geschrieben. Nun möchte ich diese Daten logischerweise in eine DB Tabelle schreiben. Dafür habe ich folgenden Code:

*********************************************************************

function neuerBenutzer( $name, $vorname, $passwort, $strasse, $hausnr, $plz, $ort, $land, $mail, $telpriv, $telmob, $beruf, $gebdat, $icq )
 {
 global $link;
 $ergebnis = mysql_query( "INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq )
      VALUES('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')", $link);
 mysql_close( $link );
 }

*********************************************************************

Dieser steht in der Datei "dblib.inc" auf welche ich mit einem include Befehl verweise. Ich kann auf Server und Datenbank zugreifen, nur möchte das ganze einfach nicht in die Tabelle schreiben. Wenn ich mich nicht täusche stimmt eigentlich alles. Oder mache ich da was falsch? Ausserdem, gibt es vielleicht eine einfachere Möglichkeit in die Tabell zu schreiben?

ihr könnt euch die seite über die url anschauen.

mfg jens

  1. $ergebnis = mysql_query( "INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq )
          VALUES('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')", $link);
    mysql_close( $link );
    }

    Hallo! Du musst die " ' " verbergen:

    change to:

    $sql_string="INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq ) VALUES('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')";

    $ergebnis = mysql_query($sql_string, $link);

    fastix

    1. Hallo!

      Du musst die " ' " verbergen:

      change to:

      $sql_string="INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq ) VALUES('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')";

      $ergebnis = mysql_query($sql_string, $link);

      Für das INSERT müßen die einfachen Anführungszeichen, in denen die Vraiablen stehen, nicht maskiert werden. Strings, die sich in den Variablen befinden, sollten maskiert werden. Zum Beispiel mit addslashes();

      MfG, André Laugks
      L-Andre @ gmx.de

      1. Vielen dank für Eure Lösungsvorschläge. Leider funktioniert es auch nach dem Ergänzen des Codes immer noch nicht und ich weiss auch nicht mehr weiter. Kann es vielleicht auch etwas mit den Einstellungen bei den Datensätzen in der MySQL Tabelle zu tun haben???

        Hier nochmal der Code:

        <?php

        $link;
        connectToDB();
        function connectToDB()
         {
         global $link;
         $link = mysql_connect( "blablabla", "blabla", "ganz_geheimes_passwort" );
         if ( ! $link )
          die( "Keine Verbindung zu MySQL" );
         mysql_select_db( "gkg5a_de_db", $link )
          or die( "Konnte Datenbank nicht öffnen: ".mysql_error() );
         }

        function neuerBenutzer( $name, $vorname, $passwort, $strasse, $hausnr, $plz, $ort, $land, $mail, $telpriv, $telmob, $beruf, $gebdat, $icq )
         {
         global $link;
         $sql_string = "INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq )
        VALUES ('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')";

        $ergebnis = mysql_query($sql_string, $link);

        echo mysql_error($link);

        mysql_close( $link );
        }

        ?>

        1. Es gibt da hunderttausend Möglichkeiten.

          Wie ist den die Tabelle aufgebaut?
          Was steht in den Variablen?
          Wie lang sind diese? Passt das alles zusammen?
          Was sagt denn die Fehlermeldung?

          Versuche doch die daten mal "per Hand" am mySQL- Prompt in eine lokale mySQL- Datentabelle einzufügen. Dann kannst bekommst Du eine brauchbare Fehlermeldung.

          oder benutze mal den phpMyAdmin: da kannst Du wahlweise die Daten eingeben und sehen was passiert oder Du versuchst es damit Dir den String, den Du zur Datenbank schicken willst, per echo anzeigen zu lassen und gibst Ihn per copy und paste mal dort ein. -> Fehlermeldung

          Ja und versuche mal den Tipp meines Vorredners:
          $variable=addslashes($variable)

          bevor Du die Daten losschickst. Weiss der Teufel, was bei Dir alles in den Daten drin ist.

          fastix

  2. Oder fehlt eher sowas:

    <?
    $server = "serveradresse";
    $user = "db_username";
    $pass = "passwort";
    $database = "datenbankname";

    $link = mysql_connect($server, $user, $pass);
    $dummy =mysql_query("use $database", $link);
    ?>

    und zum Schließen der Datenbank:
    <?
    $dummy = @MYSQL_CLOSE($link);
    ?>

  3. Hallo!

    function neuerBenutzer( $name, $vorname, $passwort, $strasse, $hausnr, $plz, $ort, $land, $mail, $telpriv, $telmob, $beruf, $gebdat, $icq )
    {
    global $link;
    $ergebnis = mysql_query( "INSERT INTO members ( name, vorname, passwort, strasse, hausnr, plz, ort, land, mail, telpriv, telmob, beruf, gebdat, icq )
          VALUES('$name', '$vorname', '$passwort', '$strasse', '$hausnr', '$plz', '$ort', '$land', '$mail', '$telpriv', '$telmob', '$beruf', '$gebdat', '$icq')", $link);

    // hier mal die Fehlermeldung ausgeben lassen
    echo mysql_error($link);

    mysql_close( $link );
    }

    MfG, André Laugks
    L-Andre @ gmx.de