[PgSQL] Query valideert CASE naar 0 ipv 1
De adapter genereert de volgende query:
SELECT "persons".*, (CASE WHEN "password" = 'wachtwoord' THEN '1' ELSE '0' END) AS "zend_auth_credential_match" FROM "persons" WHERE ("mailaddress" = 'mailaddress')
De query wordt goed uitgevoerd en geeft de resultset terug, met de zend_auth_credential_match = 0.
Het vreemde is dat de gegevens in de password colom exact hetzelfde zijn als in de query.
tabel 'persons'
id - int
firstname - char var 255
...
...
password - char var 255
Hoe kan het dat deze valideert naar 0? password = password valideert wel naar 1.
De waarden, copy-paste:
query: e355c7bc5e8380cc58ec608d21fb1aa1fffafd97
tabel: e355c7bc5e8380cc58ec608d21fb1aa1fffafd97
Overigens is de query wijzigen niet echt een optie, daar dit standaard in het framework zit
Gewijzigd op 01/01/1970 01:00:00 door Storeman storeman
Ligt het misschien aan het datatype character varying?
SELECT "persons".*, (CASE WHEN "password" = 'wachtwoord' THEN '1' ELSE '0' END) AS "zend_auth_credential_match" FROM "persons" WHERE ("mailaddress" = 'mailaddress')
?
want die "" bij case en in de where clause die horen daar in principe niet thuis... en de tabel alias ook nog eens geqoute .....
Het wordt volgens mij dan niet gezien als field identifier
Gewijzigd op 01/01/1970 01:00:00 door Noppes
Veel succes ermee.
Ik lees je query nu nog weer helemaal door en ik vind 't maar een raar ding. Geef heb eens binnen tags helemaal incl het deel waar je je query draait...
Code (php)
1
SELECT "persons".*, (CASE WHEN "password" = 'wachtwoord' THEN '1' ELSE '0' END) AS "zend_auth_credential_match" FROM "persons" WHERE ("mailaddress" = 'mailaddress')
Als ik die CASE WHEN weghaal en er vervolgens een extra WHERE deel aan toevoeg (met het wachtwoord), dan nog steeds valideert ie niet. Daarnaast wordt de query gewoon uitgevoerd door pgadmin, én draaien andere queries via het zend framework op phpmyadmin wél gewoon.
Zeer vreemd inderdaad (ook die quotes), maar daar zullen de geleerden bij Zend wel over nagedacht hebben.
Ik ben er echter nog steeds niét uit :(
Ik heb zojuist geprobeert om de rij te vinden op password, dan wordt er geen rij gevonden, via een LIKE met % aan het eind vind ie hem wel.
edit:
Nog even verder gezocht, blijkt dat er new-lines in het password veld staan, hier meede ik gister nog op gechecked te hebben.
:S :S