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