/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Column count doesn't match value count...?
Fra : Martin Ploug


Dato : 12-06-05 21:08

Hej

Jeg har en query, som skal indsætte data fra en almindelig formular.
Men når jeg tester det, får jeg fejlen

"Column count doesn't match value count at row 1"

Jeg har fundet nedenstående, men er ikke helt sikker på, hvordan jeg retter
fejlen.
http://htmlfixit.com/cgi-tutes/tutorial_MySQL_Error_Invalid_Query_Column_Count_Does_Not_Match_Value_Count.php

Er det fordi der er et misforhold mellem felterne i formularen, værdierne i
query'en og felterne i min tabel?

Jeg har lavet en hidden felt i min formular med name="id" og min query ser
sådan ud:

result = mysql_query ("insert into lokaler values ('$id','$navn', '$tlf' ,
'$mobil', '$email' '$fax', '$url' ,'$postnr', '$by', '$beskrivelse',
'$udstyr', '$bemaerk')") or die(mysql_error());

På forhånd tak.

Med venlig hilsen
Martin








 
 
Peter Brodersen (12-06-2005)
Kommentar
Fra : Peter Brodersen


Dato : 12-06-05 21:33

On Sun, 12 Jun 2005 22:07:36 +0200, "Martin Ploug"
<mploug@mail.tele.dk> wrote:

>Er det fordi der er et misforhold mellem felterne i formularen, værdierne i
>query'en og felterne i min tabel?

Det er et rent SQL-relateret spørgsmål.

Normalt angiver man hvilke felter, man vil indsætte værdier for, fx:
INSERT INTO lokaler (navn, tlf, mobil) VALUES ('peter','123','456')

Angiver man ikke feltnavne (hvilket du ikke har gjort), svarer det til
at man indsætter værdier for samtlige felter:
INSERT INTO lokaler VALUES (1,'peter','123','456',...)

Problemet er, at du ikke indsætter det samme antal felter, som der er
i din tabel.

>result = mysql_query ("insert into lokaler values ('$id','$navn', '$tlf' ,
>'$mobil', '$email' '$fax', '$url' ,'$postnr', '$by', '$beskrivelse',
>'$udstyr', '$bemaerk')") or die(mysql_error());

Der er ikke noget komma mellem '$email' og '$fax' -er det med vilje?

Alternativt kan du printe din query, fx:

$query = "insert into lokaler values ('$id','$navn', '$tlf' ,
'$mobil', '$email' '$fax', '$url' ,'$postnr', '$by', '$beskrivelse',
'$udstyr', '$bemaerk')";

print $query;

Så kan du se, hvad den reelt indeholder.

--
- Peter Brodersen

Martin Ploug (12-06-2005)
Kommentar
Fra : Martin Ploug


Dato : 12-06-05 22:06

> Der er ikke noget komma mellem '$email' og '$fax' -er det med vilje?

Til Peter Brodersen

Mange tak for det - det var vist lige præcist det manglende komma der skabte
fejlen.
Nu virker det.

$result = mysql_query ("insert into lokaler values('$navn', '$tlf' ,
'$mobil', '$email', '$fax',
'$url' ,'$postnr', '$by', '$beskrivelse', '$udstyr', '$bemaerk')") or
die(mysql_error());

Nu har jeg prøvet at udskrive min query med echo $result; , men den
udksriver kun indholdet
af navn og nogle gange efterfulgt af et 1-tal, som jeg ikke ved, hvor den
får fra.

Men mange tak fordi du har hjulpet mig med at få insert til at virke.

Hilsen Martin




Peter Brodersen (12-06-2005)
Kommentar
Fra : Peter Brodersen


Dato : 12-06-05 23:33

On Sun, 12 Jun 2005 23:06:23 +0200, "Martin Ploug"
<mploug@mail.tele.dk> wrote:

>Nu har jeg prøvet at udskrive min query med echo $result; , men den
>udksriver kun indholdet
>af navn og nogle gange efterfulgt af et 1-tal, som jeg ikke ved, hvor den
>får fra.

$result vil blot være en pointer til dit resultatsæt. Mit forslag gik
på først at lægge hele SQL-forespørgslen ind i en streng (fx $query,
ikke $result), fx:

$query = "INSERT INTO ...";
print $query;
$result = mysql_query($query) or die(mysql_error());

>Men mange tak fordi du har hjulpet mig med at få insert til at virke.

Så lidt.

--
- Peter Brodersen

Martin Ploug (13-06-2005)
Kommentar
Fra : Martin Ploug


Dato : 13-06-05 19:24

> $result vil blot være en pointer til dit resultatsæt. Mit forslag gik
> på først at lægge hele SQL-forespørgslen ind i en streng (fx $query,
> ikke $result), fx:
>
> $query = "INSERT INTO ...";
> print $query;
> $result = mysql_query($query) or die(mysql_error());

Til Peter


Ok, nu forstår jeg det, og nu virker det

Endnu en gang tak.

Hilsen Martin



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste