|
| 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
| |
|
|