- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto codice Column count doesn't match value count at row 1
-
Aiuto codice Column count doesn't match value count at row 1
Salve a tutti,
è da giorni che sto litigando con questo codice php per l'inserimento dei dati in un database mysql. Mi potete aiutare? Grazie
L'errore che ricevo è che al momento di premere salva mi esce questo: Column count doesn't match value count at row 1<form method="post" action=""> <?php $campo=array(); $campo[]=array("type"=>"text","nome"=>"username"); $campo[]=array("type"=>"text","nome"=>"data"); $campo[]=array("type"=>"text","nome"=>"ora"); $campo[]=array("type"=>"bool","nome"=>"campo1"); $campo[]=array("type"=>"bool","nome"=>"campo2"); $campo[]=array("type"=>"bool","nome"=>"campo3"); $campo[]=array("type"=>"bool","nome"=>"campo4"); $campo[]=array("type"=>"bool","nome"=>"campo5"); $campo[]=array("type"=>"bool","nome"=>"campo6"); $campo[]=array("type"=>"bool","nome"=>"campo7"); $campo[]=array("type"=>"bool","nome"=>"campo8"); $campo[]=array("type"=>"bool","nome"=>"campo9"); $campo[]=array("type"=>"bool","nome"=>"campo10"); $campo[]=array("type"=>"bool","nome"=>"campo11"); $campo[]=array("type"=>"bool","nome"=>"campo12"); $campo[]=array("type"=>"bool","nome"=>"campo13"); $campo[]=array("type"=>"bool","nome"=>"campo14"); $campo[]=array("type"=>"bool","nome"=>"campo15"); $campo[]=array("type"=>"bool","nome"=>"campo16"); $campo[]=array("type"=>"bool","nome"=>"campo17"); $campo[]=array("type"=>"text","nome"=>"puntiatt"); $campo[]=array("type"=>"text","nome"=>"puntiottenuti"); foreach($campo as $k => $v){ switch($v['type']){ case "text": echo '<b>' . $v['nome'] . ':</b><input type="text" name="' . $v['nome'] . '" /><br/>'; break; case "bool": echo '<b>' . $v['nome'] . ':</b><input type="checkbox" name="' . $v['nome'] . '" value="1" /><br/>'; break; default: echo '<b>' . $v['nome'] . ':</b><input type="text" name="' . $v['nome'] . '" /><br/>'; break; } } if(isset($_POST)){ $server="****"; $user="***"; $pass="***"; $db="**"; $tabella="punti"; $link=mysql_connect($server,$user,$pass)or die(mysql_error()); $sel_db=mysql_select_db($db,$link)or die(mysql_error()); $query="INSERT INTO $tabella VALUES("; $i=0; foreach($_POST as $k => $v){ $v=htmlspecialchars($v); if($i==0){ $query.="'" . $v . "'"; }else{ $query.=",'" . $v . "'"; } $i++; } $query.=")"; $exec=mysql_query($query,$link)or die(mysql_error()); mysql_close($link); } ?> <input type="submit" value="Salva" /> </form>
-
Ciao webmatsolution,
fai un echo della query, e prova a vedere cosa va ad eseguire.
-
Saresti cosi gentile da postarmi il codice?
Grazie
-
[php]
<form method="post" action="">
<?php
$campo=array();
$campo[]=array("type"=>"text","nome"=>"username");
$campo[]=array("type"=>"text","nome"=>"data");
$campo[]=array("type"=>"text","nome"=>"ora");
$campo[]=array("type"=>"bool","nome"=>"campo1");
$campo[]=array("type"=>"bool","nome"=>"campo2");
$campo[]=array("type"=>"bool","nome"=>"campo3");
$campo[]=array("type"=>"bool","nome"=>"campo4");
$campo[]=array("type"=>"bool","nome"=>"campo5");
$campo[]=array("type"=>"bool","nome"=>"campo6");
$campo[]=array("type"=>"bool","nome"=>"campo7");
$campo[]=array("type"=>"bool","nome"=>"campo8");
$campo[]=array("type"=>"bool","nome"=>"campo9");
$campo[]=array("type"=>"bool","nome"=>"campo10");
$campo[]=array("type"=>"bool","nome"=>"campo11");
$campo[]=array("type"=>"bool","nome"=>"campo12");
$campo[]=array("type"=>"bool","nome"=>"campo13");
$campo[]=array("type"=>"bool","nome"=>"campo14");
$campo[]=array("type"=>"bool","nome"=>"campo15");
$campo[]=array("type"=>"bool","nome"=>"campo16");
$campo[]=array("type"=>"bool","nome"=>"campo17");
$campo[]=array("type"=>"text","nome"=>"puntiatt");
$campo[]=array("type"=>"text","nome"=>"puntiottenuti");foreach($campo as $k => $v){
switch($v['type']){
case "text":
echo '<b>' . $v['nome'] . ':</b><input type="text" name="' . $v['nome'] . '" /><br/>';
break;
case "bool":
echo '<b>' . $v['nome'] . ':</b><input type="checkbox" name="' . $v['nome'] . '" value="1" /><br/>';
break;
default:
echo '<b>' . $v['nome'] . ':</b><input type="text" name="' . $v['nome'] . '" /><br/>';
break;
}
}if(isset($_POST)){
$server="";
$user="";
$pass="";
$db="";
$tabella="punti";
$link=mysql_connect($server,$user,$pass)or die(mysql_error());
$sel_db=mysql_select_db($db,$link)or die(mysql_error());
$query="INSERT INTO $tabella VALUES(";
$i=0;
foreach($_POST as $k => $v){
$v=htmlspecialchars($v);
if($i==0){
$query.="'" . $v . "'";
}else{
$query.=",'" . $v . "'";
}
$i++;
}
$query.=")";
echo
$query;
$exec=mysql_query($query,$link)or die(mysql_error());
mysql_close($link);}
?>
<input type="submit" value="Salva" />
</form>
[/php]
-
Grazie 1000 molto gentile per il codice.
ho inserito facendo questa prova:
username ho messo matteo
data ho messo 23/09/2009
ora ho messo 12.32
ed ho selezionato il primo campoil risultato è questo
INSERT INTO punti VALUES('matteo','23/09/2009','12.34','1','12','32')Column count doesn't match value count at row 1
-
Bisognerebbe vedere la struttura della tabella.
Conviene comunque strutturare la query in modo da specificare il value a quale campo si riferisce, sicuramente qualche campo è invertito rispetto alla struttura della tabella.
Un esempio pratico di come dovrebbe venire è:INSERT INTO punti(nome, data, ora, campo1, campo2 ,campo3) VALUES('matteo','23/09/2009','12.34','1','12','32')
-
Non ho ben capito cosa mettere in values. cioè non ho gia i campi
-
Il values va bene così com'è, devi modificare la query in modo da essere come quella che ti ho postato io, perchè sicuramente hai invertito l'ordine di qualche campo non essendo specificati e quindi ottieni quell'errore.
-
Scusa ma il php mi è nuovo se riesci ed hai voglia visto che il mio assistente sara' assente per un po se riesci postarmi la query modificata mi faresti un grandissimo favore
-
Dovresti postare la struttura della tabella.
Senza quella non posso aiutarti più di cosi.
-
Se usi phpmyadmin ti basta accedere al tuo database e vedere la struttura della tabella 'punti'.
Per una migliore flessibilità ti consiglio anch'io di utilizzare i nomi dei campi invece che riempire ordinatamente tutti i campi, tuttavia ciò non è indispensabile, e se ti fai una lista ordinata dei campi della tabella ti basta anche solo inserire i valori alle rispettive posizioni.