Datenbank-Fehler (1064)

Hey
Folgende Fehlermeldung trat vorhin auf als ich ein Formular abgeschickt habe welches Daten in die Datenbank eintragen soll:

Code:
Datenbank-Fehler (1064): 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 '' at line 3

Nun kann ich leider nix damit anfangen und weiss auch nicht was ich mach muss um die Fehlermeldung zu verhindern... könnt ihr mir helfen?

PHP:
<?php
include('db.php');
include('checkuser.php');

if(isset(
$_REQUEST['action'])) $action=$_REQUEST['action'];

else $action='eintragen';

// Template laden
function gettemplate($template,$endung='htm')
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

if($action=='eintragen')
{
eval("dooutput(\"".gettemplate("Templates/turnier_eintragen")."\");");

}

  if($action=='submit')
{

// Variabeln aus dem Formular 
// Allgeimeine-Daten
$name = $_SESSION['user_nickname'];
$tid = $_SESSION['user_id'];
$hofname = $_SESSION['user_hname'];
$page =  $_SESSION['user_page'];
$tname = $_POST['tname'];
$vtag = $_POST['vtag'];
$vmonat = $_POST['vmonat'];
$vjahr = $_POST['vjahr'];
$adatum = $_POST['adatum'];
$plakat = $_POST['plakat'];
$regeln = $_POST['regeln'];
// Disziplinen & Klassen
// Dressur
$de = $_POST['de'];
$da = $_POST['da'];
$dl = $_POST['dl'];
$dm = $_POST['dm'];
$ds = $_POST['ds'];
// Springen
$se = $_POST['se'];
$sa = $_POST['sa'];
$sl = $_POST['sl'];
$sm = $_POST['sm'];
$ss = $_POST['ss'];
// Military
$me = $_POST['me'];
$ma = $_POST['ma'];
$ml = $_POST['ml'];
$mm = $_POST['mm'];
$ms = $_POST['ms'];
// Western
$wt = $_POST['wt'];
$wp = $_POST['wp'];
$wr = $_POST['wr'];
$wb = $_POST['wb'];
$wc = $_POST['wc'];
$wh = $_POST['wh'];
$ww = $_POST['ww'];
$ws = $_POST['ws'];
// Kutsche
$k1 = $_POST['k1'];
$k2 = $_POST['k2'];
$k4 = $_POST['k4'];
$k6 = $_POST['k6'];
$k8 = $_POST['k8'];
// Schauen
$shh = $_POST['shh'];
$shw = $_POST['shw'];
$shs = $_POST['shs'];
$shf = $_POST['shf'];
$shj = $_POST['shj'];
$shr = $_POST['shr'];
// Distanz
$defr = $_POST['defr'];
$dkdr = $_POST['dkdr'];
$dmdr = $_POST['dmdr'];
$dldr = $_POST['dldr'];
$dmtr = $_POST['dmtr'];
// Rennen
$rf = $_POST['rf'];
$rh = $_POST['rh'];
$rg = $_POST['rg'];
$rt = $_POST['rt'];
$rt1 = $_POST['rt1'];
$rp = $_POST['rp'];
// Sonstige
$shk = $_POST['shk'];
$ssp = $_POST['ssp'];
$srs = $_POST['srs'];
$ssonstige = $_POST['ssonstige'];
// Hunde
$hs = $_POST['hs'];
$ha = $_POST['ha'];
$hd = $_POST['hd'];

// Pr&uuml;fen der Felder
if($tname==''||$adatum==''||$regeln=='')

{

// Fehlermeldungen
if($tname==''){ include("Templates/error_turnier.htm"); }
if($aname==''){ include("Templates/error_turnier.htm"); }
if($regeln==''){ include("Templates/error_turnier.htm"); }


  include("Templates/error_zurueck.htm");

}
else
{

// Werte im Array sammelen um nachher zu filtern.
// Dressur
$dressur_un = array($de, $da, $dl, $dm, $ds);
$dressur = array_filter($dressur_un, create_function('$val', 'return trim($val) != "";')); 
//Springen
$springen_un = array($se, $sa, $sl, $sm, $ss);
$springen = array_filter($springen_un, create_function('$val', 'return trim($val) != "";')); 
//Military
$mili_un = array($me, $ma, $ml, $mm, $ms);
$mili = array_filter($mili_un, create_function('$val', 'return trim($val) != "";'));
// Western
$western_un = array($wt, $wp, $wr, $wb, $wc, $wh, $ww, $ws);
$western = array_filter($mili_un, create_function('$val', 'return trim($val) != "";'));
//Kutsche
$kutsche_un = array($k1, $k2, $k4, $k6, $k8);
$kutsche = array_filter($kutsche_un, create_function('$val', 'return trim($val) != "";'));
//Schauen 
$show_un = array($shh, $shw, $shs, $shf, $shj, $shr);
$show = array_filter($show_un, create_function('$val', 'return trim($val) != "";'));
//Distanz
$dis_un = array($defr, $dkdr, $dmdr, $dldr, $dmtr);
$dis = array_filter($dis_un, create_function('$val', 'return trim($val) != "";'));
//Rennen
$rennen_un = array($rf, $rh, $rg, $rt, $rt1, $rp);
$rennen = array_filter($rennen_un, create_function('$val', 'return trim($val) != "";'));
//Sonstige
$sonst_un = array($shk, $ssp, $srs);
$sonst = array_filter($sonst_un, create_function('$val', 'return trim($val) != "";'));
//Hunde
$hunde_un = array($hs, $ha, $hd);
$hunde = array_filter($hunde_un, create_function('$val', 'return trim($val) != "";'));

// Daten werden  in Tabelle eingetragen
$eintrag = "INSERT INTO turnier
        (name, tid, hofname, page, tname, vtag, vmonat, vjahr, adatum, plakat, regeln, dressur, springen, military, western, kutsche, schauen, distanz, rennen, sonstige, dsonstige, hunde)
        VALUES ('$name', '$tid', '$hofname', '$page', '$tname', '$vtag', '$vmonat', '$vjahr', '$adatum', '$plakat', '$regeln', '" . implode(', ', array_map('mysql_real_escape_string', $dressur)). "', '" . implode(', ', array_map('mysql_real_escape_string', $springen)). "', '" . implode(', ', array_map('mysql_real_escape_string', $mili)). "', '" . implode(', ', array_map('mysql_real_escape_string', $western)). "', '" . implode(', ', array_map('mysql_real_escape_string', $kutsche)). "', '" . implode(', ', array_map('mysql_real_escape_string', $show)). "', '" . implode(', ', array_map('mysql_real_escape_string', $dis)). "', '" . implode(', ', array_map('mysql_real_escape_string', $rennen)). "', '" . implode(', ', array_map('mysql_real_escape_string', $sonst)). "', '$ssonstige', '" . implode(', ', array_map('mysql_real_escape_string', $hunde)). "',";

    $eintragen = mysql_query($eintrag) OR die('Datenbank-Fehler ('.mysql_errno().'): '.mysql_error());
    
                  if($eintragen) {
                   include("Templates/good_eintrag.htm");
                } else {
                    include("Templates/error_eintrag.htm");
                }
                
            }
    }                       
?>

lg
 
Hallo,

lass dir mal die komplette SQL-Anfrage ausgeben. Dann sollte man den Fehler leichter sehen, wenn man sich nicht erst durch diesen unvorteilhaft formatierten (*hust*) Quellcode wühlen muss.

Grüße,
Matthias
 
mh und wie mach ich ne komplette SQL-Anfrage?
Die komplette SQL-Anfrage speicherst du doch in die Variable $eintrag. Lass dir diese ausgeben und verrate uns, was rauskommt.

Und was hätt ich den besser beim dem Quellcode machen können deiner Meinung nach? ;)
Aussagekräftigere Variablenbenennung, konsequente und einheitliche Einrückungen und vor allem das Vermeiden von Zeilen mit mehr als 100 Zeichen (860 sind eindeutig zu viel) wären schon mal ein Anfang.

Grüße,
Matthias
 
Zurück