[MySQL] SELECT met eigen data?

Pagina: 1
Acties:

  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
Ik ben bezig met een stukje code voor mijn website waar ik een raar soort query wil maken. Dit in verband met authenticatie.

Ik zou graag willen dat ik een vergelijking kan doen, welke redelijk complex is, ik heb bijvoorbeeld dit :
code:
1
2
3
4
5
SELECT *
FROM users
WHERE email = 'eenemail@address.nl'
AND md5( passhash + 'BAfERiQkvxmUHmmzVuLVDPcaa' ) = '7107abaee4510bcb7e06029977afae15'
LIMIT 0 , 30

hier voer ik dus een md5 uit op een waarde van een colom waar ik ook nog iets achter plak. Nu is mijn vraag, werkt dit ? Volgens mij niet, want ik krijg geen waardes terug uit de database.

Is er een mogelijkheid om dit te doen ? Ik heb natuurlijk al een tijdje zitten googlen, maar niets kunnen vinden.

[ Voor 21% gewijzigd door sorted.bits op 15-07-2005 12:45 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

heb je al gekeken of md5( passhash + 'BAfERiQkvxmUHmmzVuLVDPcaa' ) daadwerkelijk '7107abaee4510bcb7e06029977afae15' oplevert?

oogjes open, snaveltjes dicht


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Sinds wanneer kan je strings in SQL met een + aan elkaar plakken? MySQL kent uberhaupt geen concattenatie-operator ( || dus), alleen een functie.

[ Voor 39% gewijzigd door ACM op 15-07-2005 12:59 ]


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
ACM schreef op vrijdag 15 juli 2005 @ 12:58:
Sinds wanneer kan je strings in SQL met een + aan elkaar plakken? MySQL kent uberhaupt geen concattenatie-operator ( || dus), alleen een functie.
Nou dat was dus exact mijn vraag, dit is dus niet mogelijk ?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

sorted.bits schreef op vrijdag 15 juli 2005 @ 13:10:
[...]
Nou dat was dus exact mijn vraag, dit is dus niet mogelijk ?
Niet op jouw manier. ACM noemt toch de CONCAT-functie?
edit:
Sorry justmental. :*

[ Voor 7% gewijzigd door NMe op 15-07-2005 13:15 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

sorted.bits schreef op vrijdag 15 juli 2005 @ 13:10:
Nou dat was dus exact mijn vraag, dit is dus niet mogelijk ?
Aan het antwoord van ACM lees ik af dat het wel kan, maar dat je zelf ff de manual in moet duiken om de functie voor het aan elkaar plakken (ook wel: concatenatie *hint* ) te bekijken.

edit:
-NMe-: doet eens niet :( ;)

[ Voor 6% gewijzigd door justmental op 15-07-2005 13:13 ]

Who is John Galt?


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
probleem is op dit moment dat hij geen matches vind.

Ik heb gecontroleerd of mijn formule klopt en dat is wel zo, ik probeer dus nu 2 string te 'concatten' maar dit geeft geen goed resultaat. Ik ontdekte ook nog een foutje van mezelf waarbij ik de verkeerde data md5'de, maar dit heeft niets opgelost.

code:
1
SELECT * FROM users WHERE email = 'eenamail@adres.nl' AND md5(CONCAT(passhash, 'oekWTLeBOMlxTByeAzlrfySbZ')) = '59e26a1c6728b967cff56e02bf4d3f79';


Ik denk dat het fout gaat bij het gebruik van het passhash veld, dat ie daar niet de inhoud van het veld ophaalt. Is dit te controleren op 1 of andere manier ?

[ Voor 17% gewijzigd door sorted.bits op 15-07-2005 13:44 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Ehm... de query eerst even naar het scherm toveren voordat je hem uitvoert?

Of als je dat niet bedoelt, bijvoorbeeld wat je aan het maken bent even printen.

dus md5(concat(passhash,'blablabla'))

[ Voor 55% gewijzigd door Bosmonster op 15-07-2005 13:51 ]


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
Bosmonster schreef op vrijdag 15 juli 2005 @ 13:49:
Ehm... de query eerst even naar het scherm toveren voordat je hem uitvoert?

Of als je dat niet bedoelt, bijvoorbeeld als voorbeeld even wat je aan het maken bent even printen.

dus md5(concat(passhash,'blablabla'))
Duh, de querie hierboven genoemd is de output, maar aangezien het hier om SQL commando's gaat zien we output verder niet, aangezien het ZO de server ingeschoten wordt.

Zoals ik ook al gezegt hebt, de md5 hash die aan de rechterkant van de vergelijking staat, dat heb ik uitgeprobeerd. Ik denk dat het probleem bij de concat in de where ligt.

Edit : Als ik dit doe :
code:
1
2
3
SELECT md5( CONCAT( passhash, 'PieeEKjNYKQORZSCbYJXwAHSW' ) ) AS MD5Thingy
FROM users
LIMIT 0 , 30
Dan komt hij wel met de overeenkomende MD5's over de brug.

[ Voor 15% gewijzigd door sorted.bits op 15-07-2005 13:57 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:33

mulder

ik spuug op het trottoir

Ga dan eerst maar eens leren de output van het SQL statement op het scherm toveren, praten dan verder :Z

oogjes open, snaveltjes dicht


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
Don Facundo schreef op vrijdag 15 juli 2005 @ 13:55:
Ga dan eerst maar eens leren de output van het SQL statement op het scherm toveren, praten dan verder :Z
Nou almighty SQL God! Vertel me dan eens wat ik daarvoor moet doen ?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
sorted.bits schreef op vrijdag 15 juli 2005 @ 14:00:
[...]
Nou almighty SQL God! Vertel me dan eens wat ik daarvoor moet doen ?
Dat heeft niets met SQL te maken. Je bouwt een string op in je applicatie en stuurt die naar de server. In dit geval moet je de string niet naar de server sturen maar afdrukken op het scherm.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
P_de_B schreef op vrijdag 15 juli 2005 @ 14:01:
[...]


Dat heeft niets met SQL te maken. Je bouwt een string op in je applicatie en stuurt die naar de server. In dit geval moet je de string niet naar de server sturen maar afdrukken op het scherm.
Maar dat heb ik toch nu al meerdere keren gedaan, ook heb ik gechecked of een select met die md5 functie er in dezelfde output geeft :S.

Ik dacht dat hij met 1 of andere l33t3 manier van debuggen kwam, zodat ik via MySQL kon zien HOE die querie geparsed ging worden :S. Maar aangezien mensen de moeite niet nemen om de thread effe te lezen :S.

Standaard debugging hoef je me echt niet uit te leggen hoor :S.

PS. Het probleem ligt hem bij de SQL query, niet bij de PHP code.

[ Voor 5% gewijzigd door sorted.bits op 15-07-2005 14:05 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Bij je eerste query staat er 'eenemail@adres.nl', bij de 2e 'eenamail@adres.nl' :?

Who is John Galt?


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
justmental schreef op vrijdag 15 juli 2005 @ 14:05:
Bij je eerste query staat er 'eenemail@adres.nl', bij de 2e 'eenamail@adres.nl' :?
De email adressen heb ik er na het copy/pasten uit gehaald, zodat niet mijn eigen email adressen opgenomen zouden worden in de search, scheelt weer wat spam. De email adressen kloppen dus ook.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
sorted.bits schreef op vrijdag 15 juli 2005 @ 14:05:
[...]

Maar dat heb ik toch nu al meerdere keren gedaan, ook heb ik gechecked of een select met die md5 functie er in dezelfde output geeft :S.

Ik dacht dat hij met 1 of andere l33t3 manier van debuggen kwam, zodat ik via MySQL kon zien HOE die querie geparsed ging worden :S. Maar aangezien mensen de moeite niet nemen om de thread effe te lezen :S.

Standaard debugging hoef je me echt niet uit te leggen hoor :S.

PS. Het probleem ligt hem bij de SQL query, niet bij de PHP code.
Ok dan..

Oops! Google Chrome could not find www.rijks%20museum.nl


  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 21-03 21:47
Om een query te testen bij MySQL gebruik ik altijd een console.

Dit start je door dit in te typen
mysql.exe -h localhost -u user -p dbnaam

Je kunt het makelijkst een snelkopeling voor gebruiken.

"C:\Program Files\MySql\bin\mysql.exe" -h localhost -u user -p dbnaam

Volgens mij staat het bij de nieuwste MySQL gewoon een console kopeling ergens in Programa's

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ja, het is mogelijk om functies op data uit te voeren en dat te vergelijken, etc, etc, etc.
Jouw query zal in theorie wel kloppen, maar aangezien men hier jouw applicatie niet kent en dus niet precies weet welke query je nodig hebt, kan je ook gewoon nauwelijks verder geholpen worden dan dit.
Tips:
- zorg dat je weet wat je als resultaten uit de query krijgt, vertrouw niet alleen op een of andere melding die je in je eigen applicatie afgeeft na wat controles
- als een where-clause niet lijkt te vergaren wat je nodig hebt, vereenvoudig dan de where-clause (in dit geval zou ik dat md5-deel weglaten) en zorg ervoor dat je precies weet wat er in de where-clause vergeleken werd (dus dat md5-deel naar de select-list toehalen om in je applicatie/phpmyadmin/whatever te zien wat ie probeerde te vergelijken).

Het komt dus allemaal op debuggen na en dat is iets dat we hier gewoon niet zonder in-depth kennis voor je kunnen doen en in de meeste gevallen door de hoeveelheid werk die het met zich mee kan brengen niet willen doen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

En naast wat ACM hierboven zegt nog even dit: wat vriendelijker doen tegen elkaar mag ook wel. Wie de schoen past... :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:16
ACM schreef op vrijdag 15 juli 2005 @ 14:11:
Ja, het is mogelijk om functies op data uit te voeren en dat te vergelijken, etc, etc, etc.
Jouw query zal in theorie wel kloppen, maar aangezien men hier jouw applicatie niet kent en dus niet precies weet welke query je nodig hebt, kan je ook gewoon nauwelijks verder geholpen worden dan dit.
Tips:
- zorg dat je weet wat je als resultaten uit de query krijgt, vertrouw niet alleen op een of andere melding die je in je eigen applicatie afgeeft na wat controles
- als een where-clause niet lijkt te vergaren wat je nodig hebt, vereenvoudig dan de where-clause (in dit geval zou ik dat md5-deel weglaten) en zorg ervoor dat je precies weet wat er in de where-clause vergeleken werd (dus dat md5-deel naar de select-list toehalen om in je applicatie/phpmyadmin/whatever te zien wat ie probeerde te vergelijken).

Het komt dus allemaal op debuggen na en dat is iets dat we hier gewoon niet zonder in-depth kennis voor je kunnen doen en in de meeste gevallen door de hoeveelheid werk die het met zich mee kan brengen niet willen doen.
Ok, thanks! Het is in ieder geval een normaal antwoord. De meeste dingen heb ik al geprobeerd, maar ik denk dat ik maar eens ga proberen om de logs van mysql te vinden ofzo.
-NMe- schreef op vrijdag 15 juli 2005 @ 14:15:
En naast wat ACM hierboven zegt nog even dit: wat vriendelijker doen tegen elkaar mag ook wel. Wie de schoen past... :)
Tja, maar met reacties als "Leer eens maar een SQL Query te outputen :z " kunnen we natuurlijk niets.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

sorted.bits schreef op vrijdag 15 juli 2005 @ 14:24:
Ok, thanks! Het is in ieder geval een normaal antwoord. De meeste dingen heb ik al geprobeerd, maar ik denk dat ik maar eens ga proberen om de logs van mysql te vinden ofzo.
Standaard houdt MySQL geen logs bij van queries en je hebt ze ook heus niet nodig. Bovendien staan daar sowieso de resultaten al niet in. Gewoon handig debuggen en je client-applicatie wat meer informatie aan jou door laten geven dan je in een uiteindelijke versie zou laten doen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

sorted.bits schreef op vrijdag 15 juli 2005 @ 14:24:
Ok, thanks! Het is in ieder geval een normaal antwoord.
Net alsof die 16 replies daarboven allemaal zinloos waren. :/
Tja, maar met reacties als "Leer eens maar een SQL Query te outputen :z " kunnen we natuurlijk niets.
Ik heb geen namen genoemd. Verder wil ik hier ook geen discussie meer over, het enige wat ik van iedereen hier verwacht is dat het er wat vriendelijker aan toegaat. Graag ontopic nu dus. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

sorted.bits schreef op vrijdag 15 juli 2005 @ 13:52:
[...]
Duh, de querie hierboven genoemd is de output, maar aangezien het hier om SQL commando's gaat zien we output verder niet, aangezien het ZO de server ingeschoten wordt.

Zoals ik ook al gezegt hebt, de md5 hash die aan de rechterkant van de vergelijking staat, dat heb ik uitgeprobeerd. Ik denk dat het probleem bij de concat in de where ligt.

Edit : Als ik dit doe :
code:
1
2
3
SELECT md5( CONCAT( passhash, 'PieeEKjNYKQORZSCbYJXwAHSW' ) ) AS MD5Thingy
FROM users
LIMIT 0 , 30
Dan komt hij wel met de overeenkomende MD5's over de brug.
En wat als je dit nou combineert met de oorspronkelijke query?

code:
1
2
3
SELECT md5( CONCAT( passhash, 'PieeEKjNYKQORZSCbYJXwAHSW' ) ) AS MD5Thingy
FROM users
WHERE email = 'email@adres.nl' and MD5Thingy = '7107abaee4510bcb7e06029977afae15'

Programmer - an organism that turns coffee into software.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

LuCarD schreef op vrijdag 15 juli 2005 @ 14:40:
code:
1
2
3
SELECT md5( CONCAT( passhash, 'PieeEKjNYKQORZSCbYJXwAHSW' ) ) AS MD5Thingy
FROM users
WHERE email = 'email@adres.nl' and MD5Thingy = '7107abaee4510bcb7e06029977afae15'
Ik ken geen SQL-implementatie die je aliasen uit je select-list laat gebruiken in je where-clause, jij wel? Bovendien zou het exact hetzelfde opleveren aan resultaat en net zo goed niet werken.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

ACM schreef op vrijdag 15 juli 2005 @ 14:49:
[...]

Ik ken geen SQL-implementatie die je aliasen uit je select-list laat gebruiken in je where-clause, jij wel? Bovendien zou het exact hetzelfde opleveren aan resultaat en net zo goed niet werken.
:X oops....

Programmer - an organism that turns coffee into software.


Verwijderd

En dit werkt ook niet?

SQL:
1
2
3
4
5
SELECT * FROM `users`
WHERE
  `email` = 'eenemail@address.nl'
AND
  MD5(CONCAT(`passhash`, 'BAfERiQkvxmUHmmzVuLVDPcaa')) = '7107abaee4510bcb7e06029977afae15'


Ik heb dit zelf getest (met natuurlijk een eigen passhash) en het werkte gewoon hoor.

[ Voor 9% gewijzigd door Verwijderd op 15-07-2005 17:10 ]

Pagina: 1