|
| Mækreligg problem med MySQL... Fra : Jacob Volstrup |
Dato : 02-02-02 16:54 |
|
Hej,
Jeg har en tabel, som jeg bruger til at gemme oplysninger om mine kunder:
CREATE TABLE kundedata_kunder (
id bigint(20) NOT NULL auto_increment,
navn varchar(60) NOT NULL default '',
adresse varchar(60) NOT NULL default '',
postnr mediumint(9) NOT NULL default '0',
email varchar(80) NOT NULL default '',
tlf varchar(8) NOT NULL default '',
mobil varchar(8) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY id_2 (id)
) TYPE=MyISAM;
For at tilføje kundernes oplysninger til tabellen, bruger jeg nedenstående
kode:
$sql = "INSERT INTO kundedata_kunder VALUES ('', '$navn', '$adresse',
'$postnr', '$email', '$telefon', '$mobil');";
mysql_query($sql);
mysql_query($sql);
Som I kan se, bliver den sidste linie udført 2 gange. Problemet er nemlig,
at hvis jeg kun udfører den een gang, bliver navnet ikke tilføjet i
tabellen. De resterende oplysninger tilføjes fint nok begge gange, men
kunden navn bliver først tilføjet anden gang jeg udfører sql'en.
Hvis jeg prøver at udføre den nøjagtig samme sql fra en hvilken som helst
klient, udføres den korrekt første gang.
Jeg forstår virkelig ikke hvad der er problemet her. Det er jo ikke helt
optimalt som det fungerer nu...
På forhånd tak.
--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/
| |
Christian Joergensen (02-02-2002)
| Kommentar Fra : Christian Joergensen |
Dato : 02-02-02 17:44 |
|
On Sat, 02 Feb 2002 16:53:36 +0100, Jacob Volstrup wrote:
> Problemet er nemlig,
> at hvis jeg kun udfører den een gang, bliver navnet ikke tilføjet i
> tabellen.
Er problemet der også hvis du udfører kommandoen direkte til MySQL,
udenom PHP?
--
Christian Jørgensen | Never make any mistaeks.
http://www.razor.dk |
| |
Jacob Volstrup (02-02-2002)
| Kommentar Fra : Jacob Volstrup |
Dato : 02-02-02 19:47 |
|
"Christian Joergensen" <mail@phpguru.dk> wrote in message
> Er problemet der også hvis du udfører kommandoen direkte til MySQL,
> udenom PHP?
Nej, det skrev jeg også, men fik det vist formuleret lidt uklart.
Hvis jeg bruger en hvilken som helst anden klient til at udføre sætningen
med, fungerer det første gang!
Det er da også underligt, at sætningen virker korrekt anden gang den
udføres, uden at der ændres på den.
Jeg forstår det vitterligt ikke!
--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/
| |
Mads Lie Jensen (02-02-2002)
| Kommentar Fra : Mads Lie Jensen |
Dato : 02-02-02 18:45 |
|
On Sat, 2 Feb 2002 16:53:36 +0100, "Jacob Volstrup"
<volstrup@avanceret.dk> wrote:
>$sql = "INSERT INTO kundedata_kunder VALUES ('', '$navn', '$adresse',
>'$postnr', '$email', '$telefon', '$mobil');";
>mysql_query($sql);
>mysql_query($sql);
>
>Som I kan se, bliver den sidste linie udført 2 gange. Problemet er nemlig,
>at hvis jeg kun udfører den een gang, bliver navnet ikke tilføjet i
Hvad sker der hvis du fjerner det semikolen som sidder inden i den
tekststreng med sql-sætningen? ($sql =-linien slutter med ;"; Sql som
udføres via phps mysql_query() skal ikke afsluttes med semikolen.
Men hvad der sker hvis de alligevel gør ved jeg ikke lige..... bare et
forslag.
Ellers kan du jo lige lave en
echo mysql_err();
efter hvert kald til mysql_query()
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Directory Opus - nu også til windows - http://www.gpsoft.com.au
| |
Jacob Volstrup (02-02-2002)
| Kommentar Fra : Jacob Volstrup |
Dato : 02-02-02 19:43 |
|
"Mads Lie Jensen" <mads@gartneriet.dk> wrote in message
> Hvad sker der hvis du fjerner det semikolen som sidder inden i den
> tekststreng med sql-sætningen? ($sql =-linien slutter med ;"; Sql som
> udføres via phps mysql_query() skal ikke afsluttes med semikolen.
> Men hvad der sker hvis de alligevel gør ved jeg ikke lige..... bare et
> forslag.
Det sidste semikolon er egentlig først blevet tilføjer efter jeg havde
kigget mærkeligt på det hele i laaang tid.
> Ellers kan du jo lige lave en
> echo mysql_err();
> efter hvert kald til mysql_query()
Er det ikke mysql_error(); man plejer at bruge? Den har jeg i alt fald haft
gang i et par gange, men der returneres intet ;o(
Suk!
--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/
| |
Mads Lie Jensen (02-02-2002)
| Kommentar Fra : Mads Lie Jensen |
Dato : 02-02-02 20:05 |
|
On Sat, 2 Feb 2002 19:43:23 +0100, "Jacob Volstrup"
<volstrup@avanceret.dk> wrote:
>Er det ikke mysql_error(); man plejer at bruge? Den har jeg i alt fald haft
>gang i et par gange, men der returneres intet ;o(
Jo, sørme så, det er mysql_error() eller måske mysql_errno()
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Directory Opus - nu også til windows - http://www.gpsoft.com.au
| |
Tonni Aagesen (03-02-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 03-02-02 07:05 |
|
"Jacob Volstrup" <volstrup@avanceret.dk> skrev i en meddelelse
news:KXT68.14961$Eu2.1090585@news010.worldonline.dk...
> Hej,
>
> Jeg har en tabel, som jeg bruger til at gemme oplysninger om mine kunder:
>
> CREATE TABLE kundedata_kunder (
> id bigint(20) NOT NULL auto_increment,
> navn varchar(60) NOT NULL default '',
> adresse varchar(60) NOT NULL default '',
> postnr mediumint(9) NOT NULL default '0',
> email varchar(80) NOT NULL default '',
> tlf varchar(8) NOT NULL default '',
> mobil varchar(8) NOT NULL default '',
> PRIMARY KEY (id),
> UNIQUE KEY id (id),
> KEY id_2 (id)
> ) TYPE=MyISAM;
>
>
> For at tilføje kundernes oplysninger til tabellen, bruger jeg nedenstående
> kode:
>
> $sql = "INSERT INTO kundedata_kunder VALUES ('', '$navn', '$adresse',
> '$postnr', '$email', '$telefon', '$mobil');";
> mysql_query($sql);
> mysql_query($sql);
>
> Som I kan se, bliver den sidste linie udført 2 gange. Problemet er nemlig,
> at hvis jeg kun udfører den een gang, bliver navnet ikke tilføjet i
> tabellen. De resterende oplysninger tilføjes fint nok begge gange, men
> kunden navn bliver først tilføjet anden gang jeg udfører sql'en.
> Hvis jeg prøver at udføre den nøjagtig samme sql fra en hvilken som helst
> klient, udføres den korrekt første gang.
Personligt bruger jeg nu altid ca.:
$sql = "INSERT INTO tabel ("row_1, ... row_n") VALUES ("$var_1, ...
$var_n");
Det skulle kun være nødvendigt at køre query'en een gang med ovenstående
eksempel
--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk
| |
Jacob Volstrup (04-02-2002)
| Kommentar Fra : Jacob Volstrup |
Dato : 04-02-02 01:31 |
|
> Personligt bruger jeg nu altid ca.:
>
> $sql = "INSERT INTO tabel ("row_1, ... row_n") VALUES ("$var_1, ...
> $var_n");
>
> Det skulle kun være nødvendigt at køre query'en een gang med ovenstående
> eksempel
Det gør desværre ingen forskel (se evt. svar på Anton Stonor's indlæg)
--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/
| |
Anton Stonor (03-02-2002)
| Kommentar Fra : Anton Stonor |
Dato : 03-02-02 14:38 |
|
On Sat, 2 Feb 2002 16:53:36 +0100, "Jacob Volstrup"
<volstrup@avanceret.dk> wrote:
>CREATE TABLE kundedata_kunder (
> id bigint(20) NOT NULL auto_increment,
<snip>
>For at tilføje kundernes oplysninger til tabellen, bruger jeg nedenstående
>kode:
>
>$sql = "INSERT INTO kundedata_kunder VALUES ('', '$navn', '$adresse',
>'$postnr', '$email', '$telefon', '$mobil');";
Du kunne prøve at lade id-feltet være i fred, når du indsætter. Det er
jo netop sat til auto_increment.
I stedet kan du præcisere, hvilke felter, du vil indsætte i. - I
øvrigt generelt en god ide:
INSERT INTO kundedata_kunder (navn,adresse....)
VALUES ('$navn', '$adresse' ....)
Anton Stonor
| |
Jacob Volstrup (04-02-2002)
| Kommentar Fra : Jacob Volstrup |
Dato : 04-02-02 01:29 |
|
> Du kunne prøve at lade id-feltet være i fred, når du indsætter. Det er
> jo netop sat til auto_increment.
>
> I stedet kan du præcisere, hvilke felter, du vil indsætte i. - I
> øvrigt generelt en god ide:
Jeg har gjort som foreslået:
INSERT INTO kundedata_kunder (navn, adresse, postnr, email, tlf, mobil)
VALUES ('$navn', '$adresse', '$postnr', '$email', '$telefon', '$mobil');
Men desværre gør det ingen forskel. Jeg er stadig nødt til at udføre
sætningen 2 gange, for at få gemt navnet.
Men jeg har observeret, at det er den første udførsel af sætningen, som
medfører at navnet bliver gemt, dvs. at den række i tabellen med det laveste
nummer (ud af de 2 rækker, som lige er blevet tilføjet), har alle
oplysninger.
Hvilket jo bare gør det hele endnu mere underligt.
Men problemet er altså stadig, at jeg ikke kan nøjes med at udføre sætningen
een gang, hvis jeg skal have tilføjet en kunde.
Øv, øv og atter øv!
--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/
| |
Tonni Aagesen (04-02-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 04-02-02 01:41 |
|
"Jacob Volstrup" <volstrup@avanceret.dk> skrev i en meddelelse
news:yAk78.15754$Eu2.1158295@news010.worldonline.dk...
> Jeg har gjort som foreslået:
>
> INSERT INTO kundedata_kunder (navn, adresse, postnr, email, tlf, mobil)
> VALUES ('$navn', '$adresse', '$postnr', '$email', '$telefon', '$mobil');
>
> Men desværre gør det ingen forskel. Jeg er stadig nødt til at udføre
> sætningen 2 gange, for at få gemt navnet.
>
> Men jeg har observeret, at det er den første udførsel af sætningen, som
> medfører at navnet bliver gemt, dvs. at den række i tabellen med det
laveste
> nummer (ud af de 2 rækker, som lige er blevet tilføjet), har alle
> oplysninger.
>
> Hvilket jo bare gør det hele endnu mere underligt.
>
> Men problemet er altså stadig, at jeg ikke kan nøjes med at udføre
sætningen
> een gang, hvis jeg skal have tilføjet en kunde.
Har du mulighed for at lægge sourcen ud på nettet, så vi kan se den - Det
kan ikke passe at du skal køre SQL'en 2 to gange!
--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk
| |
Jacob Volstrup (04-02-2002)
| Kommentar Fra : Jacob Volstrup |
Dato : 04-02-02 02:17 |
| | |
|
|