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

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

Det hele kan ses i aktion på flg. URL:
http://webhotel2.webhosting.dk/~netspecialistendk/

Tilføj en vare til kurven, så kan der udfyldes oplysninger om dig som
bruger. Tryk på 'Godkend ordre', hvorefter sql'en bliver vist i toppen,
efterfulgt af hvilken værdi navnet er blevet gemt med i tabellen.

--
Mvh Jacob Volstrup
- Snart online med www.netspecialisten.dk
Midlertidig online med: http://webhotel2.webhosting.dk/~netspecialistendk/



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste