webForumDet fria alternativet

Column count doesn't match value count at row 1

5 svar · 398 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Vad är det för fel på denna kod...

function save_file($fil, $caption) 
{ 
   $filename = str_replace(" ", "_", $_FILES[$fil]['name']); 
   $fil_storlek = $_FILES[$fil]['size']; 
   $fil_typ = strtoupper(substr($filename, -4, 4)); 
   $fil_upp = $_FILES[$fil]['tmp_name']; 
   $owner = $CURUSER['id']; 
   $added = date("Y-m-d h:i:s"); 
   if (!$filename) die("Välj en fil<br><a href=\"uploadpic.php\">Försök igen</a>"); 

   if ($fil_storlek > 3072000) die("Bilden {$_FILES[$fil]['name']} är för stor. Max storlek är 3000kb<br><a href=\"uploadpic.php\">Försök igen</a>"); 

   if ($fil_typ != ".JPG" && $fil_typ != ".GIF") die ("Filen {$_FILES[$fil]['name']} är av annan typ än jpg/gif<br><a href=\"uploadpic.php\">Försök igen</a>"); 

   if (file_exists("/home/*****/*****/*****/userpics/" . $filename)) { 
      $sql = mysql_query("SELECT id FROM bilder WHERE filename = '$filename'"); 
      $fil_id = mysql_result($sql, 0); 
      die ("Filen <a href=\"image.php?bild=$fil_id\">$filename</a> finns redan<br><a href=\"uploadpic.php\">Försök igen</a>"); 
   } 
   mysql_query("INSERT INTO bilder VALUES 
      ( 
      0, 
      '$filename', 
      '$caption', 
      '$owner', 
      '$added' 
      )") or sqlerr(__FILE__, __LINE__);

Får bara...

Column count doesn't match value count at row 1

..när jag ska ladda upp en bild.

Databasen

CREATE TABLE `bilder` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `owner` int(10) unsigned NOT NULL default '0',
  `added` datetime NOT NULL default '0000-00-00 00:00:00',
  `filename` varchar(50) NOT NULL default '',
  `caption` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;

Tacksam för svar.

HamatzuMedlem sedan mars 2005232 inlägg
#2
   mysql_query("INSERT INTO bilder VALUES
      (
      '$filename',
      '$caption',
      '$owner',
      '$added'
      )") or sqlerr(__FILE__, __LINE__);

Ta bort nollan på sista sql-frågan, eftersom att den kolumnen har auton_increament så ska du inte behöva lägga till det värdet, det gör den automatiskt.

GuldstrandMedlem sedan juli 20041 271 inlägg
#3

Tack för svaret, men får fortfarande samma fel.
Detta har jag nu...

      $sql = mysql_query("SELECT id FROM bilder WHERE filename = '$filename'"); 
      $fil_id = mysql_result($sql); 
      die ("Filen <a href=\"image.php?bild=$fil_id\">$filename</a> finns redan<br><a href=\"uploadpic.php\">Försök igen</a>"); 
   } 
   mysql_query("INSERT INTO bilder VALUES 
      (  
      '$filename', 
      '$caption', 
      '$owner', 
      '$added' 
      )") or sqlerr(__FILE__, __LINE__);
GuldstrandMedlem sedan juli 20041 271 inlägg
#4

Tydligen så hade jag 2 andra fält i samma tabell som inte användes och som strulade till allt. Nu fungerar det som det ska.

HamatzuMedlem sedan mars 2005232 inlägg
#5

Låter bra! :bire

The_HulkMedlem sedan juni 20031 837 inlägg
#6

vill du slippa den typen av problem kan du ange vilka fält du vill lägga till värden för

INSERT INTO (field1, field2, ...) VALUES('val1', 'val2', ...)
132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)