zero: insert into funktion

hello,

ich brauche eure hilfe, ich hab keine ahnung wieso es nicht funktioniert und zwar:

wie wir alle wissen insert into funktion:

mysql_query("INSERT INTO tabelle (id,grund,datum)
             VALUES ('3', 'A', '2008-02-21')");

das funktioniert auch super, aber ich will die werte mit variablen übergeben und nicht direkt:

$id = '3';
$grund = 'A';
$date= '2008-02-21';

mysql_query("INSERT INTO tabelle (id,grund,datum)
             VALUES ( $id, $grund, $date )");

das funktioniert nicht und fehler werden auch nicht angezeigt, ich hab viel ausprobiert, aber ich komm einfach nicht drauf. ich brauch eure hilfe

danke ZeRo

  1. Hallo!
    Probiers mal mit

      
    mysql_query("INSERT INTO `tabelle` (`id`,`grund`,`datum`)  
                  VALUES ( '$id', '$grund', '$date' )");  
    // bzw ichs machs immer so, is Geschmackssache  
    mysql_query("INSERT INTO `tabelle` (`id`,`grund`,`datum`)  
                  VALUES ( '".$id."', '".$grund."', '".$date."' )");  
    
    
    --
    LG,
    Snafu
    1. Moin Moin!

      Hallo!
      Probiers mal mit

      mysql_query("INSERT INTO tabelle (id,grund,datum)
                    VALUES ( '$id', '$grund', '$date' )");
      // bzw ichs machs immer so, is Geschmackssache
      mysql_query("INSERT INTO tabelle (id,grund,datum)
                    VALUES ( '".$id."', '".$grund."', '".$date."' )");

        
      Wenn die Variablen ungeprüft aus URL- oder POST-Parametern kommen, ist das ein wunderschöner Angriffsvektor für SQL Injection. Benutze parametrisierte SQL-Statements (z.B. [msqli->prepare](http://de2.php.net/manual/en/function.mysqli-prepare.php) oder wenigstens eine zur jeweiligen Datenbank passende quoting-Funktion.  
        
      Alexander
      
      -- 
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
      
      1. Hallo!

        Wenn die Variablen ungeprüft aus URL- oder POST-Parametern kommen, ist das ein wunderschöner Angriffsvektor für SQL Injection. Benutze parametrisierte SQL-Statements...

        1.) Sollte register_globals off sein und damit können die verwendetn Variablen nicht direkt auf den POST-Variableninhalt zugreifen sondern man müsste ihnen "per Hand" den POST-Variableninhalt liefern was
        2.) in seinem kurzen Beispiel nicht der Fall war.

        Aber du hast natürlich recht :)
        Ich hätte eigentlich schon mysql_escape_string() im Codeausschnitt verwenden können / sollen.

        --
        LG,
        Snafu
        1. Hallo.

          Hinweis:  Diese Funktion ist seit PHP 4.3.0 veraltet. Benutzen Sie diese Funktion nicht und verwenden Sie stattdessen mysql_real_escape_string().

          Servus,
          Flo

          1. ich bedanke mich an euch alle SEHR :). es funktioniert und das mit mysql_real_escape_string() muss ich noch ausprobieren. bis jetzt hab ichs nicht gekannt, mal sehen, ob ichs schaff...

            nochmals einen großen DANK,
            zero

        2. Moin!

          Wenn die Variablen ungeprüft aus URL- oder POST-Parametern kommen, ist das ein wunderschöner Angriffsvektor für SQL Injection. Benutze parametrisierte SQL-Statements...

          Selbst wenn die Variablenwerte nicht direkt aus bösen Quellen kommen, so können dennoch Zeichen enthalten sein, die das SQL-Statement ungültig machen.

          Deshalb ist GRUNDSÄTZLICH zu escapen, egal woher die Variablen kommen. Selbst dann, wenn man eigentlich denkt, dass...

          1.) Sollte register_globals off sein und damit können die verwendetn Variablen nicht direkt auf den POST-Variableninhalt zugreifen sondern man müsste ihnen "per Hand" den POST-Variableninhalt liefern was
          2.) in seinem kurzen Beispiel nicht der Fall war.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."