• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Column count doesn't match value count at row 1

florian20002

Neues Mitglied
so, den oben gennaten fehler habe ich. Ich habe schon im Forum gesucht, und weis auch was der bedeutet, aber ich weiss nicht wo der Fehler im Sctipt liegt. Könntet iht mir bitte helfen.
Script:
PHP:
<?
if (isset($_POST['Send']))
{
//if sended -> upload
    // call to database
    include("../cms_config/conf.php");
    include("../cms_config/connect.php");
    //read information
    foreach($_POST as $key=>$wert)
    {
        ${$key} = $wert;
    }
    
    $Baujahr .= "/".$monat;
    $SQL  = "INSERT INTO autos ";
    $SQL .= "(ID, Titel,  Typ, Erstzulassung, KW, PS, Km, KRS, Farbe, Aufbau, Zylinder, Preis, getriebe, ccm, abs, airbag, alarmanlage, alufelgen, allrad, anhaengerkupplung, regensensor, beifahrer_airbag, behindertengerecht, bordcomputer, cd, elektrfensterheber, spiegel, sitze, einparkhilfe, tempomat, sportfahrwerk, esp, klima, klimaautomatik, lederausstattung, navigationssystem, nebelscheinwerfer, radiocassette, schiebedach, servolenkung, seiteairbags, sitzheizung, standheizung, traktionskontrolle, xenonscheinwerfer, zentralverriegelung, wegfahrsperre, funkfernbedienung, tuning)";
    $SQL .= "VALUES (NULL, '$Titel',  '$Typ', '$Erstzulassung', '$KW', '$PS', '$Km', '$KRS', '$Farbe', '$Aufbau', '$Zylinder', '$Preis', '$getriebe', '$Zylinder', '$ccm', '$abs', '$airbag', '$alarmanlage', '$alufelgen', '$allrad', '$anhaengerkupplung', '$regensensor', '$beifahrer_airbag', '$behindertengerecht', '$bordcomputer', '$cd', '$elektrfensterheber', '$spiegel', '$sitze', '$einparkhilfe', '$tempomat', '$sportfahrwerk', '$esp', '$klima', '$klimaautomatik', '$lederausstattung', '$navigationssystem', '$nebelscheinwerfer', '$radiocassette', '$schiebedach', '$servolenkung', '$seiteairbags', '$sitzheizung', '$standheizung', '$traktionskontrolle', '$xenonscheinwerfer', '$zentralverriegelung', '$wegfahrsperre', '$funkfernbedienung', '$tuning')";
    mysql_query($SQL, $DB);
    if (mysql_affected_rows($DB) == 1) 
    {
    //if insert was successful, show it =) 
    echo "Das Auto wurde erfolgreicht eingefügt!";
    }
    else
    {
    echo mysql_error($DB);
    }
        // check for pictures
    $PID = mysql_insert_id($DB);
    

    if (count($_FILES) > 0)
        {    
            foreach($_FILES as $key=>$wert)
            {
                if ($wert['error']==0)
                {
                $Datei= $wert['tmp_name'];
                $Name = $wert['name'];
                $Type = $wert['type'];
                $Size = $wert['size'];
                /*$Mass = getimagesize($wert['tmp_name']);
                $Height = $Mass[1];
                $Width = $Mass[0];
                */
                
                $File = addslashes(fread(fopen($Datei, "rb"), filesize($Datei)));
                $SQL = "INSERT INTO bilder (ID, Name, Auto, File, Typ)
                VALUES (NULL, '$Name', '$PID', '$File', '$Type')";
                mysql_query($SQL, $DB);
                if (mysql_affected_rows($DB) == 1) echo "<br>Bilder erfolgreich eingefügt!<br><br>";
                else echo mysql_error($DB);
                }
            }
        }

}
else
{
?>

<? echo $_SERVER['PHP_SELF'] ; ?>

<?
}
?>
SQL:
PHP:
$SQL2 .= 'CREATE TABLE `autos` ('
        . ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
        . ' `Titel` VARCHAR(100) NOT NULL, '
        . ' `Typ` VARCHAR(100) NOT NULL, '
        . ' `Erstzulassung` VARCHAR(100) NOT NULL, '
        . ' `KW` INT NOT NULL, '
        . ' `PS` VARCHAR(100) NOT NULL, '
        . ' `Km` FLOAT NOT NULL, '
        . ' `KRS` VARCHAR(100) NOT NULL, '
        . ' `Farbe` VARCHAR(100) NOT NULL, '
        . ' `Zylinder` VARCHAR(100) NOT NULL, '
        . ' `Preis` VARCHAR(100) NOT NULL'
        . ' `Aufbau` VARCHAR(100) NOT NULL'
        . ' `getriebe` VARCHAR(100) NOT NULL'
        . ' `abs` BOOL NOT NULL
        . ' `airbag` BOOL NOT NULL
        . ' `alarmanlage` BOOL NOT NULL
        . ' `alufelgen` BOOL NOT NULL
        . ' `allrad` BOOL NOT NULL
        . ' `anhaengerkupplung` BOOL NOT NULL
        . ' `regensensor` BOOL NOT NULL
        . ' `beifahrer_airbag` BOOL NOT NULL
        . ' `behindertengerecht` BOOL NOT NULL
        . ' `boardcomputer` BOOL NOT NULL
        . ' `cd` BOOL NOT NULL
        . ' `eletrfensterheber` BOOL NOT NULL
        . ' `spiegel` BOOL NOT NULL
        . ' `sitze` BOOL NOT NULL
        . ' `einparkhilfe` BOOL NOT NULL
        . ' `tempomat` BOOL NOT NULL
        . ' `sportfahrwerk` BOOL NOT NULL
        . ' `esp` BOOL NOT NULL
        . ' `klima` BOOL NOT NULL
        . ' `klimaautomatik` BOOL NOT NULL
        . ' `lederausstattung` BOOL NOT NULL
        . ' `navigationssystem` BOOL NOT NULL
        . ' `nebelscheinwerfer` BOOL NOT NULL
        . ' `radiocassette` BOOL NOT NULL
        . ' `schiebedach` BOOL NOT NULL
        . ' `servolenkung` BOOL NOT NULL
        . ' `seiteairbags` BOOL NOT NULL
        . ' `sitzheizung` BOOL NOT NULL
        . ' `standheizung` BOOL NOT NULL
        . ' `traktionskontrolle` BOOL NOT NULL
        . ' `xenonscheinwerfer` BOOL NOT NULL
        . ' `zentralverriegelung` BOOL NOT NULL
        . ' `wegfahrsperre` BOOL NOT NULL
        . ' `funkfernbedienung` BOOL NOT NULL
        . ' `tuning` BOOL NOT NULL
        . ' )'
        . ' ENGINE = myisam;';
 
Die Tabelle hat 49 Spalten, du versuchst jedoch Werte für 50 Spalten einzusetzen.
-> Irgendwo ist ein Wert zu viel. Vergleiche am besten Spalte und einzusetzenden Wert paarweise, um den überflüssigen Wert, bzw. die fehlende Spalte zu finden.
 
Code:
'$getriebe', '$Zylinder', '$ccm'

Das $Zylinder an der Stelle ist verkehrt (doppelt).

Der Code ist zudem anfällig für SQL Injections. Mehr Informationen zum Beispiel hier: Standardantwort zu SQL Injections - Forum: phpforum.de

PHP:
    foreach($_POST as $key=>$wert)
    {
        ${$key} = $wert;
    }

Mit diesem Code können vom Benutzer beliebig Variablen mit Werten gesetzt werden. Du solltest mindestens eine Whitelist mit erlaubten Variablennamen anlegen und jeden $key aus $_POST mit dieser abgleichen.
 
Zurück
Oben