/ 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
Problemer med nog SQL (MySQL)
Fra : Jacob Volstrup


Dato : 02-10-01 22:14

Hej igen,

jeg udfører nedenstående sætning:

mysql_query("UPDATE brugere SET adgangskode = '$nykode' WHERE (brugernavn
= '$brugernavn' AND adgangskode = '$glkode')");

Koden bliver altså kun udført hvis den gamle adgangskode, som man har
indtastet, er lig med den adgangskode, som i forvejen er gemt i tabellen.
Det skulle jeg da i alt fald mene, men det er ikke hvad der sker. Uanset
hvad man har indtastet som $glkode, udføres SQL-sætningen uden fejl!
Jeg forstår det ikke helt, da sætningen vel kun skulle udføres det sted,
hvor både brugernavnet og den indtastede (gamle) adgangskode passer sammen.

På forhånd tak.

Mvh Jacob Volstrup



 
 
Mickey (02-10-2001)
Kommentar
Fra : Mickey


Dato : 02-10-01 22:59

"Jacob Volstrup" <volstrup@avanceret.dk> skrev i en meddelelse
news:%equ7.929

> mysql_query("UPDATE brugere SET adgangskode = '$nykode' WHERE
(brugernavn
> = '$brugernavn' AND adgangskode = '$glkode')");

mysql_query("UPDATE brugere SET adgangskode = '$nykode' WHERE (brugernavn =
'$brugernavn', adgangskode = '$glkode')");

virker det sådan ? (jeg er ik så klog på MySQL)


--
|-|$235-|)k - Mickey - Eko sum lapis
Advarsel :
Dette indlæg er koncentreret kommunikation.
Tilsæt diplomatiske vendinger i passende mængde.


Kim Emax (03-10-2001)
Kommentar
Fra : Kim Emax


Dato : 03-10-01 01:22

"Jacob Volstrup" <volstrup@avanceret.dk> skrev

> Koden bliver altså kun udført hvis den gamle adgangskode, som man har
> indtastet, er lig med den adgangskode, som i forvejen er gemt i tabellen.

Du mener "burde blive udført", ik?

> Det skulle jeg da i alt fald mene, men det er ikke hvad der sker. Uanset
> hvad man har indtastet som $glkode, udføres SQL-sætningen uden fejl!
> Jeg forstår det ikke helt, da sætningen vel kun skulle udføres det sted,
> hvor både brugernavnet og den indtastede (gamle) adgangskode passer
sammen.

Prøv at droppe paranteserne omkring din where, det har jeg i hvert fald
aldrig set før, jeg ville gøre sådan her:

mysql_query("UPDATE brugere
SET adgangskode = '$nykode'
WHERE brugernavn = '$brugernavn'
AND adgangskode = '$glkode'");

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest advancerede VinWebShop





Jacob Volstrup (03-10-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 03-10-01 21:03

> Prøv at droppe paranteserne omkring din where, det har jeg i hvert fald
> aldrig set før, jeg ville gøre sådan her:

Satte paranteserne på, da jeg opdagede fejlen, men de gør ingen forskel.
Desværre :(

Mvh Jacob Volstrup



Andreas Frøsting (03-10-2001)
Kommentar
Fra : Andreas Frøsting


Dato : 03-10-01 02:57

>Det skulle jeg da i alt fald mene, men det er ikke hvad der sker. Uanset
>hvad man har indtastet som $glkode, udføres SQL-sætningen uden fejl!

Selvfølgelig bliver den udført uden fejl, der er nemlig ingen
syntaxfejl i SQL'en.

Istedet skal du checke med mysql_affected_rows() hvorvidt der er
rækker der bliver ændret i.

:wq!
//andreas
http://phpwizard.dk

Jacob Volstrup (03-10-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 03-10-01 21:02

> Selvfølgelig bliver den udført uden fejl, der er nemlig ingen
> syntaxfejl i SQL'en.

Men så burde koden vel heller ikke blive opdateret, vel? Problemet er at
koden bliver opdateret, uanset hvad man har indtastet som en gamle kode.

> Istedet skal du checke med mysql_affected_rows() hvorvidt der er
> rækker der bliver ændret i.

Tror ikke at det er der problemet ligger.

Mvh Jacob Volstrup




Andreas Frøsting (04-10-2001)
Kommentar
Fra : Andreas Frøsting


Dato : 04-10-01 00:10

>> Selvfølgelig bliver den udført uden fejl, der er nemlig ingen
>> syntaxfejl i SQL'en.
>
>Men så burde koden vel heller ikke blive opdateret, vel? Problemet er at
>koden bliver opdateret, uanset hvad man har indtastet som en gamle kode.

Næppe - check lige efter...

>> Istedet skal du checke med mysql_affected_rows() hvorvidt der er
>> rækker der bliver ændret i.
>
>Tror ikke at det er der problemet ligger.

Har du prøvet?

http://dk.php.net/manual/en/function.mysql-affected-rows.php
"mysql_affected_rows() returns the number of rows affected by the last
INSERT, UPDATE or DELETE query associated with link_identifier. If the
link identifier isn't specified, the last link opened by
mysql_connect() is assumed."

mysql_query("UPDATE hest SET hest = 'teltneger' WHERE hest =
'krikke'");
if (mysql_affected_rows()) {
// Der blev opdateret en eller flere rækker
} else {
// Der blev ikke opdateret noget
}

Prøv - kan du ikke få mysql_affected_rows() til at virke ordentligt,
så spørg igen.

:wq!
//andreas
http://phpwizard.dk

Peter Brodersen (03-10-2001)
Kommentar
Fra : Peter Brodersen


Dato : 03-10-01 03:08

On Tue, 2 Oct 2001 23:14:09 +0200, "Jacob Volstrup"
<volstrup@avanceret.dk> wrote:

>Uanset hvad man har indtastet som $glkode, udføres SQL-sætningen uden fejl!

Hvis din MySQL-query driller, så bed om at få fejlmeddelelsen printet
ud, fx:

print mysql_error();

--
- Peter Brodersen

Peter Brodersen (03-10-2001)
Kommentar
Fra : Peter Brodersen


Dato : 03-10-01 03:57

On Wed, 03 Oct 2001 04:07:50 +0200, Peter Brodersen
<professionel@nerd.dk> wrote:

>>Uanset hvad man har indtastet som $glkode, udføres SQL-sætningen uden fejl!
>Hvis din MySQL-query driller, så bed om at få fejlmeddelelsen printet
>ud, fx:

Hm, læste det som "med fejl".

Om ikke andet kan jeg kun anbefale, når tingene ser sort ud, først at
smide hele sin query i en variabel og derefter printe den ud. Nogle
gange giver det ikke det resultat, man forventer, fx pga. forkert
escaping af diverse tegn.

Om ikke andet kan man så altid efterfølgende manuelt køre den query
via en tekst-mysql-klient.

--
- Peter Brodersen

Jacob Volstrup (03-10-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 03-10-01 21:10

> Om ikke andet kan man så altid efterfølgende manuelt køre den query
> via en tekst-mysql-klient.

Det ændrer desværre ikke noget. Uanset hvad man indtaster som den gamle
kode, bliver det udført, og koden ændres. Jeg forstår det virkelig ikke!

Mvh Jacob Volstrup



Kim Emax (03-10-2001)
Kommentar
Fra : Kim Emax


Dato : 03-10-01 23:28


"Jacob Volstrup" <volstrup@avanceret.dk> skrev

> Det ændrer desværre ikke noget. Uanset hvad man indtaster som den gamle
> kode, bliver det udført, og koden ændres. Jeg forstår det virkelig ikke!

Har du prøvet at kaste denne query afsted i en MySQL klient? ellers... har
du mulighed for at gøre det? eller ændre kodeord efterfølgende, for så vil
jeg gerne teste det for dig... men KUN, hvis du kan rette dit kodeord
bagefter...

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest advancerede VinWebShop



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

Månedens bedste
Årets bedste
Sidste års bedste