tomikaze: Mysql Syntax Error

Hallo !

Ich weiß leider nicht mehr weiter.
Habe ein Formular erstellt. Die Daten werden per POST an ein php-skript übergeben. Diese soll nichts anderes machen als die Daten in eine Datenbank-Tabelle "kategorie" schreiben.

Hier nun der Code der kategorie_neu.php:

  
include('../inc/base.inc.php');  
include('../inc/adfunctions.inc.php');  
include('../inc/database.inc.php');  
  
$index = $_POST['index'];  
$kat = $_POST['kat'];  
  
$connection = mysql_connect($db['host'], $db['uid'], $db['pwd']);  
 if ($connection)  
 {  
  mysql_select_db($db['db']);  
  $sql = "INSERT INTO kategorie (index,kat) VALUES ('$index', '$kat')";  
  echo $sql;  
  mysql_query($sql) or die(mysql_error());  
 }  

Als Ausgabe bekomme ich
"
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 'index,kat)VALUES('2', 'Beilagen')' at line 1
"

Ich sehe beim besten willen keinen Syntax Fehler.

Gruß

  1. Hello,

    $index = $_POST['index'];
    $kat = $_POST['kat'];

    Statt hier stumpf und überflüssig Varíablen umzukopiern, solltest Du lieber an die Sixcherheit denken:

    $connection = mysql_connect($db['host'], $db['uid'], $db['pwd']);
    if ($connection)
    {
      mysql_select_db($db['db']);

    ## achte darauf, dass magic quotes gpc ausgeschaltet oder bereits wieder entfernt sind!

    $index = mysql_real_escape_string($_POST['index'],$connection);
         $kat   = mysql_real_escape_string($_POST['kat'],$cennection);

    $sql = "INSERT INTO kategorie (index,kat) VALUES ('$index', '$kat')";

    "index" ist ein reserviertes Wort in MySQL (in eigentlich allen DBMS) und darf daher nicht als Spaltenname verwendet werden. MySQL kennt dafür die Backticks spaltenname und das "Verbot" außer Kraft zu setzen.

    Ein harzliches Glückauf

    Tom vom Berg

    http://bergpost.annerschbarrich.de
    .

    --
    Nur selber lernen macht schlau
  2. Danke, "index" das wars.