Josef: Daten werden nicht gespeichert, "leere Tabelle"

hallo,

ich habe folgendes problem:

ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.

Der code hierzu sieht wie folgt aus:

<?PHP

$name = $_POST["name"];
  $nachname = $_POST["nachname"];

$eintrag = "INSERT INTO adressen (name,nachname) VALUES
              ('$name','$nachname')";

$eintragen = mysql_query($eintrag);

mysql_close();
  include 'db_ausgabe.php' //daten wieder ausgeben
?>

Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(
was mach' ich falsch?

für eine antwort freue ich mich sehr,

liebe grüsse,

josef

  1. Hi,

    $eintrag = "INSERT INTO adressen (name,nachname) VALUES
                  ('$name','$nachname')";

    lass dir das hier bitte mal ausgeben.

    $eintragen = mysql_query($eintrag);

    Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error

    MfG
    Rouven

    --
    -------------------
    Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#
    1. Hallo Rouven

      $eintrag = "INSERT INTO adressen (name,nachname) VALUES
                 ('$name','$nachname')";

      lass dir das hier bitte mal ausgeben.

      ok print_r($eintrag) liefert:

      INSERT INTO adressen (firma,name) VALUES ('','')

      hierstimmt etwas nicht!!! statt ('$name','$nachname') wird ('','')
      in die variable übergeben??? :-/

      $eintragen = mysql_query($eintrag);

      Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error

      ja habe ich gemacht! mysql_error liefert keine fehler

      bin immernoch ratlos

      1. Hallo Josef,

        lass dir das hier bitte mal ausgeben.

        ok print_r($eintrag) liefert:

        INSERT INTO adressen (firma,name) VALUES ('','')

        hierstimmt etwas nicht!!! statt ('$name','$nachname') wird ('','')
        in die variable übergeben??? :-/

        Wie ich bereits erwähnte:

        Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.

        $eintragen = mysql_query($eintrag);

        Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error

        ja habe ich gemacht! mysql_error liefert keine fehler

        Nun ja, das SQL-Statement ist syntaktisch korrekt und wird von MySQL daher anstandslos ausgeführt. Du musst dafür sorgen, dass Dein SQL-Statement so aussieht, wie es Deiner Ansicht nach aussehen sollte.

        bin immernoch ratlos

        Lass Dir doch den Inhalt von $_POST anzeigen, vielleicht auch noch den von $_GET. Vielleicht lauten die Schlüssel anders, vielleicht suchst Du Deine Daten im falschen Array. Das können wir - wiederum mangels Code - nicht wissen. Dazu müssten wir den (HTML-)Code der Formularseite kennen, von der aus dieses Skript hier aufgerufen wird.

        Freundliche Grüße

        Vinzenz

  2. Hallo Josef,

    ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.

    in eine MySQL-Datenbank, wie es aussieht. Es ist bei MySQL-Fragen meist eine gute Idee, die genaue Version anzugeben, da der Funktionsumfang zwischen den Versionen enorm differiert.

    Der code hierzu sieht wie folgt aus:

    <?PHP

    $name = $_POST["name"];
      $nachname = $_POST["nachname"];

    Warum? Warum diese Zuweisung. Sie ist überflüssig. Weg damit.

    $eintrag = "INSERT INTO adressen (name,nachname) VALUES
                  ('$name','$nachname')";

    Oh je. Du verläßt Dich auf die unseligen Magic Quotes von PHP. Verwende lieber mysql_real_escape_string. Lies Dir die gesamte Handbuchseite durch, orientiere Dich an Beispiel 3.

    $eintragen = mysql_query($eintrag);

    Was machst Du im Fehlerfall? Ich vermisse Deine Fehlerbehandlung.

    mysql_close();
      include 'db_ausgabe.php' //daten wieder ausgeben

    Bitte, was steht in db_ausgabe.php? Meine Glaskugel will nicht so recht.

    Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
    ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(

    Lass Dir doch die Abfrage anzeigen, bevor Du sie an MySQL weitergibst, echo dürfte Dir nicht unbekannt sein. Es wäre nett, wenn Du uns dann diese Abfrage im Klartext angeben würdest, denn mit PHP-Code kann in einem solchen Fall weder MySQL noch ein potentieller Helfer etwas anfangen. In vielen Fällen sieht das generierte SQL-Statement anders aus als man es erwartet.

    Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.

      in eine MySQL-Datenbank, wie es aussieht. Es ist bei MySQL-Fragen meist eine gute Idee, die genaue Version anzugeben, da der Funktionsumfang zwischen den Versionen enorm differiert.

      die Mysql version ist 5.0.21

      Der code hierzu sieht wie folgt aus:

      <?PHP

      $name = $_POST["name"];
        $nachname = $_POST["nachname"];

      Warum? Warum diese Zuweisung. Sie ist überflüssig. Weg damit.

      $eintrag = "INSERT INTO adressen (name,nachname) VALUES
                    ('$name','$nachname')";

      Oh je. Du verläßt Dich auf die unseligen Magic Quotes von PHP. Verwende lieber mysql_real_escape_string. Lies Dir die gesamte Handbuchseite durch, orientiere Dich an Beispiel 3.
      ok danke für den Tipp! werde ich gleich tun

      $eintragen = mysql_query($eintrag);

      Was machst Du im Fehlerfall? Ich vermisse Deine Fehlerbehandlung.
      mysql_error !?

      mysql_close();
        include 'db_ausgabe.php' //daten wieder ausgeben

      Bitte, was steht in db_ausgabe.php? Meine Glaskugel will nicht so recht.
      dort steht:

      <?//Verbindung zur SQL Datenbank herstellen
        //include 'db_connect.php';
        include 'db_connect.php';
        //SQL Befehl in eine Variable $anfrage speichern
        $anfrage = "SELECT * FROM adressen";
        //Dann wird der SQL Befehl ausgeführt, indem mysql_query aufgerufen wird
        $ergebnis = mysql_query($anfrage);
        echo "Name <br>";
        while ($row = mysql_fetch_object($ergebnis))
        {
          echo $row->firma.' ';
          echo $row->name.' ';
          echo $row->nachname.'<br>';
        }
      ?>

      Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
      ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(

      Lass Dir doch die Abfrage anzeigen, bevor Du sie an MySQL weitergibst, echo dürfte Dir nicht unbekannt sein. Es wäre nett, wenn Du uns dann diese Abfrage im Klartext angeben würdest, denn mit PHP-Code kann in einem solchen Fall weder MySQL noch ein potentieller Helfer etwas anfangen. In vielen Fällen sieht das generierte SQL-Statement anders aus als man es erwartet.

      Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.

      Freundliche Grüße

      Vinzenz

      Vielen Dank
      und schöne grüsse zurück
      josef