Christian: Einrag in Datenbank

Hallo

Ich möchte gern Werte aus einem Formular in eine Datenbank eitragen.Aber irgendwie krieg ich des nich hin krieg zwar kontackt zu meiner Datenbank aber er trägt nichts ein!hier mein quellcode

datenbank.php:

<?$db = @MYSQL_CONNECT(localhost,root)
 or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB(handys);
if($db)  echo "Verbindung zur Datenbank wurde hergestellt";
$result = mysql_db_query("INSERT $hersteller
        INTO handys");
");
?>

und eintrag.html:

<html>
<head>
<title>
Handysuche
</title>
</head>
<body>
<form name="form1" action="datenbank.php">
<input name="hersteller" size="40" maxlength="60" value="" /><input type="submit" value="Abschicken" />
</form>

Also weiss jemand was ich falsch mache????

danke im voraus

  1. yo,

    INSERT INTO Tabellename (Spalte1, Spalte2..) VALUES (Wert1, Wert2....), wobei Not Null und Primary spalten immer werte benötigen.

    Ilja

    1. Hello,

      INSERT INTO Tabellename (Spalte1, Spalte2..) VALUES (Wert1, Wert2....), wobei Not Null und Primary spalten immer werte benötigen.

      und auch wenn ich wieder gelyncht werde... Anfänger sollten die andere Syntax benutzen:

      $hersteller = stripslashes($_POST['hersteller'];
      $typ = stripslashes($_POST['typ'];

      $sql  = "Insert into $table ";
      $sql .= "set ";
      $sql .= "hersteller = '".mysql_escape_string($hersteller)."'";
      $sql .= ",typ = '".mysql_escape_string($typ)."'";

      $res = mysql_query($sql, $con);
      if ($res)
      {
        echo "erfolgreich hinzugefügt";
      }
      else
      {
        echo "Fehler aufgetreten: ".mysql_error();
      }

      Das Escapen nicht vergessen.
      Die Häkchen nicht vergessen für die Feldwerte, auch für Zahlen!
      Die Fehlerbehandlung nicht vergessen.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hallo,

        und auch wenn ich wieder gelyncht werde... Anfänger sollten die andere Syntax benutzen:

        Von mir wirst Du deswegen nicht gelyncht - im Gegenteil.
        Ich applaudiere!
        "Deine" Syntax ist viel intuitiver.

        Nur: Die schliessenden Klammern bei stripslashes() hast Du vergessen.

        Das Escapen nicht vergessen.
        Die Häkchen nicht vergessen für die Feldwerte, auch für Zahlen!
        Die Fehlerbehandlung nicht vergessen.

        Wie wahr, wie wahr!

        Wobei ich das Escapen etwas frueher machen wuerde:

        Statt:

        $hersteller = stripslashes($_POST['hersteller']);
        /* ... */
        $sql  = "INSERT INTO $table SET";
        $sql .= "hersteller = '".mysql_escape_string($hersteller)."'";

        schreibe ich eher:

        $hersteller = mysql_escape_string(stripslashes($_POST['hersteller']));
        /* ... */
        $sql  = "INSERT INTO $table SET";
        $sql .= "hersteller = '$hersteller'";

        u.s.w. - das finde ich einfach uebersichtlicher.
        Ist aber reine Geschmackssache.

        mfg
        Thomas

        1. Hello Thomas,

          Nur: Die schliessenden Klammern bei stripslashes() hast Du vergessen.

          Irgendwas fehlt immer *umpf*

          Das Escapen nicht vergessen.
          Die Häkchen nicht vergessen für die Feldwerte, auch für Zahlen!
          Die Fehlerbehandlung nicht vergessen.

          Wie wahr, wie wahr!

          Wobei ich das Escapen etwas frueher machen wuerde:

          Statt:

          $hersteller = stripslashes($_POST['hersteller']);
          /* ... */
          $sql  = "INSERT INTO $table SET";
          $sql .= "hersteller = '".mysql_escape_string($hersteller)."'";

          schreibe ich eher:

          $hersteller = mysql_escape_string(stripslashes($_POST['hersteller']));

          Jein.
          Das war natürlich mal wieder arg verkürzt von mir.

          Man muss davon ausgehen, dass man nach dem stripslashes(), falls es denn notwendig ist, mit den Datenwerten noch eine Weile im Script weiterarbeitet und sie dann erst nach der Verarbeitung an die Speichern-Funktion übergibt.

          Ich propagiere ja sowieso Arrays und da kann man das dann locker mit einer Schleife erledigen und hat überhaupt keine Schreibarbeit mehr.

          /* ... */
          $sql  = "INSERT INTO $table SET";
          $sql .= "hersteller = '$hersteller'";

          Das ist dann wunderbar lesbar. Insofern hast Du recht. Für mein eigenes Tut werde ich das vielleicht so machen. da sieht man dann viel besser, was passiert.

          Übrinens nochmal drauf rumgeritten:

          Auch Zahlen sollte man in Häkchen übergeben, wenn sie nicht aus dem Script stammen. Da war neulich jemand, der ziemlich nervig gefragt hat, wieso.

          Weil das Query sonst ziemlich leicht injizierbar ist. Das bedeutet, dass man mittles schlauer Tricks über das Webfomular die ganze Datenbank manipulieren kann. Die Wahrscheinlichkeit, das auszuschließen, besteht in der Kombination der Häkchen für ALLE Werte außer NULL und dem Escapen.

          NULL ___muss___ man daher auch im Script generieren und darf es niemals direkt aus dem HTTP-Stream entnehmen.

          So, nun reichts für heute. Nun wird nun noch mitgelesen.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hallo Christian!

    $result = mysql_db_query("INSERT $hersteller INTO handys");
    Also weiss jemand was ich falsch mache????

    Ja, du läßt Dir keine Fehler ausgeben.

    Außerdem ist Dein SQL-Befehl "nicht so ganz" richtig.
    Du solltest Dir erstmal das MYSQL-Manual und das PHP-Manual (Stichwort: $_GET und $_POST) am besten mal ein wenig anschauen.
    Lesetip: http://www.mysql.com/doc/en/INSERT.html bzw. http://de2.php.net/manual/en/language.variables.predefined.php

    MfG
    Götz

    --
    Losung und Lehrtext für Mittwoch, 28. Januar 2004
    Der Herr ist der wahrhaftige Gott, der lebendige Gott, der ewige König. (Jeremia 10,10)
    Pilatus fragte Jesus: Bist du der König der Juden? Er aber antwortete und sprach zu ihm: Du sagst es. (Markus 15,2)
    (http://www.losungen.de/heute.php3)