sebastian: SQL Fehler

Hallo,

ich krieg dir Krise. Was ist bitte hieran falsch?

$sql = "INSER INTO user (nick,eMail) VALUES ('Sebastian','blubb')";
$ergebnis = mysql_query($sql,$connection) or die (mysql_error());

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 'INSER INTO user (nick,eMail) VALUES ('Sebastian','blubb')' at line 1

Sebastian

  1. Hi,

    inserT <--

    Gruss,
      Erwin

    1. Danke schonmal.

      Was ist denn dann hierran falsch:

      $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],'date','0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail')";

      ?

      Ich bekomme keine Fehlermeldung!

      Und noch eine Frage: Was muss ich bei 'date' angeben, damit dort das aktuelle Datum eingetragen wird?

      1. echo $begrüßung;

        Was ist denn dann hierran falsch:
        $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],'date','0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail')";
        ?
        Ich bekomme keine Fehlermeldung!

        Das ist ja auch nur eine Zuweisung. Allerding sollte es eine PHP-Meldung geben. Ist display_errors eingeschaltet und ist das error_reporting ausreichend hoch gesetzt, z.B. auf E_ALL?

        Was ist das Ergebnis der Zuweisung? Oder anders gefragt: Wie sieht das SQL-Statement aus, das du zum Server sendest?

        Und noch eine Frage: Was muss ich bei 'date' angeben, damit dort das aktuelle Datum eingetragen wird?

        Eine dafür vorgesehene Funktion. Du findest sie im Kapitel Date and Time Functions.

        echo "$verabschiedung $name";

        1. Hmm, dass mit dem Datum hab ich jetzt gelöst:

          Hier mal der komplette COde, wo ich eine leere weiße seite erhalte:

          error_reporting(E_ALL);

          $datum = date('d.m.Y');
          $datepart = explode(".", $datum);
          $mysql_datum = "$datepart[2]-$datepart[1]-$datepart[0]";

          $connection = mysql_connect($server,$user,$pass) or die (mysql_error());
          mysql_select_db("nedias",$connection) or die (mysql_error());
          $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],$mysql_datum,'0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail')";
          $ergebnis = mysql_query($sql,$connection) or die (mysql_error());

          /*while($row = mysql_fetch_assoc($ergebnis)){
           echo $row['name'];
           echo $row['nachname'];
           }*/
          mysql_free_result($ergebnis);
          mysql_close($connection);

          1. echo $begrüßung;

            Hier mal der komplette COde, wo ich eine leere weiße seite erhalte:

            Das ist nicht der komplette Code. Du verwendest Variablen, deren Inhalt uns nicht bekannt ist. Die Connection-Daten sind nicht so wichtig wohl aber der Inhalt von $_POST, den du in dein SQL-Statement einfließen lässt. Ich bat dich, selbiges zur Kontrolle auszugeben. Möchtest du das noch tun? Ansonsten werden weitere Hilfestellungen schwierig. Ich bat ebenfalls display_errors zu kontrollieren (phpinfo() hilft dir dabei), denn wenn dieses nicht eingeschaltet ist, nützt dir das höchste error_reporting-Level nichts.

            Außerdem solltest du dich mit dem Kapitel Database Security beschäftigen und da dich besonders über SQL-Injection informieren.

            echo "$verabschiedung $name";

            1. So, habe jetzt nachgeguckt, display_errors ist OFF. Hab das versucht in der php.ini umzustellen und habe dann mal das Ausklammerungszeichen weggemacht. Es hat sich aber nichts geändert.

              Nur wie übeprüfe ich mein SQL-Statement???

              Hier mal der gesamte Code:

              anmelden2.php:
              <?php

              include("configs.php");
              error_reporting(E_ALL);

              $datum = date('d.m.Y');
              $datepart = explode(".", $datum);
              $mysql_datum = "$datepart[2]-$datepart[1]-$datepart[0]";

              $connection = mysql_connect($server,$user,$pass) or die (mysql_error());
              mysql_select_db("nedias",$connection) or die (mysql_error());
              $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],$mysql_datum,'0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail')";
              $ergebnis = mysql_query($sql,$connection) or die (mysql_error());

              /*while($row = mysql_fetch_assoc($ergebnis)){
               echo $row['name'];
               echo $row['nachname'];
               }*/
              mysql_free_result($ergebnis);
              mysql_close($connection);

              ?>

              anmelden.php:
              <?xml version="1.0" ?>
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml">
              <head>
              <title>nedios free webspace</title>
              <link rel="stylesheet" href="css/basic.css" type="text/css">
              <link rel="stylesheet" href="css/anmelden.css" type="text/css">
              </head>
              <body>

              <div class="content">

              <div class="head">
                Anmeldung!
              </div><br/>
              <div class="text">
                Um sich anzumelden füllen sie bitte folgende Felder aus:
              </div><br/>

              <!-- REGISTER -->
              <form action="anmelden2.php" method="post">

              <table class="register">
                <tr class="register">
                  <td class="register1">
                    Nick:
                  </td>
                  <td class="register2">
                    <input type="text" name="nick"/>
                  </td>
                </tr>
                <tr class="register">
                  <td class="register1">
                    Name:
                  </td>
                  <td class="register2">
                    <input type="text" name="name"/>
                  </td>
                </tr>
                <tr class="register">
                  <td class="register1">
                    Nachname:
                  </td>
                  <td class="register2">
                    <input type="text" name="nachname"/>
                  </td>
                </tr>
                <tr class="register">
                  <td class="register1">
                    eMail:
                  </td>
                  <td class="register2">
                    <input type="text" name="eMail"/>
                  </td>
                </tr>
                <tr>
                  <td>
                  <input type="submit" value="Absenden"/>
                  </td>
                </tr>
              </table><br/>

              </form>
              <!-- END REGISTER -->

              </div>

              </body>
              </html>

              Sebastian

              1. yo,

                Nur wie übeprüfe ich mein SQL-Statement???

                mit echo $sql ausgeben lssen und die abfrage ohne php an das dbms schicken und sehen, welche fehlermeldung kommt.

                zum anderen machst du ein insert, also keine abfrage. deswegen ist die while schleife dort meiner mienung nach auch sinnlos, keine select abfrage, keine ausgabe der ergebnismenge.

                hast du schon mal überprüft, ob die daten in der tabelle eingetragen wurden ?

                Ilja

              2. Hallo!

                So, habe jetzt nachgeguckt, display_errors ist OFF. Hab das versucht in der php.ini umzustellen und habe dann mal das Ausklammerungszeichen weggemacht. Es hat sich aber nichts geändert.

                Ähem. Hast du display_errors auskommentiert und auf off gelassen oder auf on umgestellt?

                mfg
                  frafu

              3. Hi,

                So, habe jetzt nachgeguckt, display_errors ist OFF. Hab das versucht in der php.ini umzustellen und habe dann mal das Ausklammerungszeichen weggemacht. Es hat sich aber nichts geändert.

                Hast Du es auf _ON_ gestellt _und_ den Server neu gestartet?

                Welche Ausgabe erwartest Du eigentlich? Ich sehe in anmelden2.php keine. Auch keine Weiterleitung oder sonstwas.
                In Deiner Query fehlen imo bei den Values Hochkommata um die variablen Strings. Ausserdem übergibst Du eine feste id. Ist das kein auto_increment-Feld?

                So, jetzt erstmal die Baustellen beackern.

                Viel Erfolg!

      2. Hallo!

        Was ist denn dann hierran falsch:

        $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],'date','0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail')";

        Zeige den generierten SQL String her. Mit dem kann man nichts anfangen.
        Was mir aber auffällt  sind die möglicherweise fehlenden Quotes rund um den nick.

        Thema Datum: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

        mfg
          frafu

  2. Hello,

    $sql = "INSER INTO user (nick,eMail) VALUES ('Sebastian','blubb')";

    Lies mal das Statement von vorne - von GANZ vorne - und richtig LESEN - nicht erahnen, nicht meinen, prüfen.

    MfG
    Rouven

    --
    -------------------
    Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
  3. Hallo!

    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 'INSER INTO user (nick,eMail) VALUES ('Sebastian','blubb')' at line 1

    INSER ist kein SQL Befehl.

    mfg
      frafu