Thomas Böttner: mitglieder datenbank (Fehler )

Hallo an alle, ich bekomme immer die Fehlermeldung:
MySQL-Error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'not, email, alter, geschlecht (M/W), groesse, wohnort, beruf) v
und ich weiss echt nicht mehr weiter, kenne mich nicht so mit PHP und SQL aus, ich hoffe ihr habt da mehr plan als ich.
Hier ist noch der link zu dem formular und den Fehler:
http://flame4ever.fl.funpic.de/senden.php
Kann es an der SQL datenbank liegen?
<html>
<head>
<?php
   if ($gesendet)
   {
      $db = mysql_connect(localhost,*datenbank*,*Passwort*);

$sqlab = "insert mitglieder";
      $sqlab .= "(nick, name, vorname, hobbys, hot, not, email, alter, geschlecht (M/W), groesse, wohnort, beruf) values ";
      $sqlab .= "('$ni', '$na', '$vn', '$hb', '$ht', '$nt', '$em', '$al', '$ge', '$gs', '$wo', '$br')";

mysql_db_query("*datenbank*", $sqlab);

if (mysql_errno()) die ("MySQL-Error:" . mysql_error());

$num = mysql_affected_rows();
      if ($num>0)
         echo "Es wurde 1 Datensatz hinzugefügt<p>";
      else
      {
         echo "Es ist ein Fehler aufgetreten, ";
         echo "es wurde kein Datensatz hinzugefügt<p>";
      }
      mysql_close($db);
   }
?>

</head>

<body>
Geben Sie einen vollständigen Datensatz ein und senden Sie das
Formular ab:
<form action = "senden.php" method = "POST">
    <input type="text" name="ni"> Nick Name (Spitzname)<p>
    <input type="text" name="vn"> Vorname<p>
    <input type="text" name="hb"> Was sind deine Hobbys<p>
    <input type="text" name="ht"> Wie soll dein Traumpartner sein?<p>
    <input type="text" name="nt"> Auf was stehst du garnicht?<p>
    <input type="text" name="em"> Deine E-Mail Adresse<p>
    <input type="text" name="al"> Wie alt bist du?<p>
    <input type="text" name="ge"> Welches Geschlecht bist du? (M für Mänlich / W für Weiblich)<p>
    <input type="text" name="gs"> Wie Gross bist du? (in Form XXX cm)<p>
    <input type="text" name="wo"> Wo Wohnst du?(Stadt, Bundesland)<p>
    <input type="text" name="br"> Was für ein Beruf übst du aus?<p>
 <input type="submit" name="gesendet">
    <input type="reset">
</form>

Alle Datensätze <a href="html_ausgabe.php">anzeigen</a>
</body>
</html>

datenbank:

Feld Typ Attribute Null Standard Extra Aktion
nick varchar(30) Nein
name varchar(30) Nein
vorname varchar(30) Nein
hobbys varchar(50) Nein
hot varchar(50) Nein
not varchar(50) Nein
email varchar(30) Nein
alter int(3) Nein 0
geschlecht (M/W) char(1) Nein
groesse float Nein 0
wohnort varchar(30) Nein
beruf varchar(30) Nein

  1. hi,

    MySQL-Error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'not, email, alter, geschlecht (M/W), groesse, wohnort, beruf) v

    http://dev.mysql.com/doc/mysql/de/Reserved_words.html

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Das heist im klartext, wenn ich die alter umbenenne müsste es schon gehen?
      Kann man das nicht durch 'alter' beheben, den text zufolge nicht?

      1. hi,

        Das heist im klartext, wenn ich die alter umbenenne müsste es schon gehen?

        nein.
        schau dir die meldung nochmal genauer an - mysql ist nicht erst ab der stelle unzufrieden, wo du alter verwendest.

        Kann man das nicht durch 'alter' beheben, den text zufolge nicht?

        wenn du reservierte wörter als spaltennamen verwenden willst, nutze backticks, um sie zu notieren reserviertes\_wort.
        besser noch, wähle andere spaltennamen, die nicht mit reservierten wörtern kollidieren, um solchen problemen grundsätzlich aus dem weg zu gehen.

        was die letzten vier worte deiner frage zu bedeuten haben, lässt sich mit meinem verständnis von deutscher sprache leider nicht dechiffrieren.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Was kann es denn noch sein? Ich finde es einfach nicht.
          Das mit den spalten habe ich alles geändert.

          <html>
          <head>
          <?php
             if ($gesendet)
             {
                $db = mysql_connect(localhost,xxx,xxx);

          $sqlab = "insert mitglieder";
                $sqlab .= "(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) values ";
                $sqlab .= "($ni, $na, $vn, $hb, $ht, $nt, $em, $al, $ge, $gs, $wo, $br)";

          mysql_db_query("xxx", $sqlab);

          if (mysql_errno()) die ("MySQL-Error:" . mysql_error());

          $num = mysql_affected_rows();
                if ($num>0)
                   echo "Es wurde 1 Datensatz hinzugefügt<p>";
                else
                {
                   echo "Es ist ein Fehler aufgetreten, ";
                   echo "es wurde kein Datensatz hinzugefügt<p>";
                }
                mysql_close($db);
             }
          ?>

          </head>

          <body>
          Geben Sie einen vollständigen Datensatz ein und senden Sie das
          Formular ab:
          <form action = "senden.php" method = "POST">
              <input type="text" name="ni"> Nick Name (Spitzname)<p>
              <input type="text" name="vn"> Vorname<p>
              <input type="text" name="hb"> Was sind deine Hobbys<p>
              <input type="text" name="ht"> Wie soll dein Traumpartner sein?<p>
              <input type="text" name="nt"> Auf was stehst du garnicht?<p>
              <input type="text" name="em"> Deine E-Mail Adresse<p>
              <input type="text" name="al"> Wie alt bist du?<p>
              <p>Welches Geschlecht bist du?</p>
              <input type="radio" name="ge" value="Maenlich"> Maenlich<p>
              <input type="radio" name="ge"value="Weiblich"> Weiblich<p>
              <input type="text" name="gs"> Wie Gross bist du? (in Form XXX cm)<p>
              <input type="text" name="wo"> Wo Wohnst du?(Stadt, Bundesland)<p>
              <input type="text" name="br"> Was für ein Beruf übst du aus?<p>
           <input type="submit" name="gesendet">
              <input type="reset">
          </form>

          Alle Datensätze <a href="html_ausgabe.php">anzeigen</a>
          </body>
          </html>

          1. hi,

            Was kann es denn noch sein? Ich finde es einfach nicht.

            und ich finde in deinem posting keine fehlerbeschreibung.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. Es wird nicht in die datenbank eingetragen und ich bekomme immer den Fehler:

              MySQL-Error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) values
              wo soll der syntax fehler denn sein?

              1. hi,

                MySQL-Error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) values

                ahc ja, hätte mir eigentlich gleich auffallen sollen :-)

                wo soll der syntax fehler denn sein?

                http://dev.mysql.com/doc/mysql/de/Legal_names.html

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hallo Thomas,

    neben dem was wahsaga geschrieben hat:

    $sqlab .= "(nick, name, vorname, hobbys, hot, not, email, alter, geschlecht (M/W), groesse, wohnort, beruf) values ";

    hälst du 'geschlecht (M/W)' für einen sinnvollen Spaltennamen? afaik muss der gequotet werden (siehe http://dev.mysql.com/doc/mysql/de/Legal_names.html).

    $sqlab .= "('$ni', '$na', '$vn', '$hb', '$ht', '$nt', '$em', '$al', '$ge', '$gs', '$wo', '$br')";

    wo kommen die Variablen her?

    mysql_db_query("*datenbank*", $sqlab);

    die Funktion ist veraltet, verwende mysql_select_db() und mysql_query()

    <input type="text" name="ge"> Welches Geschlecht bist du? (M für Mänlich / W für Weiblich)<p>

    warum keine Radiobuttons?

    Grüße aus Nürnberg
    Tobias

    1. Ich hab leider eine alte SQL datenbank (aber kostenlos).
      Leider kenne ich mich nict so mit den Radiobuttons aus wie muss ich die tabellenspalte da anlegen und welchen typ?
      Ich werde jetzt erstmal die tabellen umbenennen.

      1. Hallo Thomas,

        Ich hab leider eine alte SQL datenbank (aber kostenlos).

        ?

        Leider kenne ich mich nict so mit den Radiobuttons aus

        http://de.selfhtml.org/html/formulare/auswahl.htm#radiobuttons

        wie muss ich die tabellenspalte da anlegen und welchen typ?

        SET, ENUM oder VARCHAR(1) (was es mit den Spaltentypen aufsich hat, steht in http://dev.mysql.com/doc/mysql/de/Column_types.html).

        Ich werde jetzt erstmal die tabellen umbenennen.

        die Tabelle brauchst du nicht umbenennen - es reicht wenn du die eine oder andere Spalte umbenennst.

        Grüße aus Nürnberg
        Tobias