login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF]Where wordt verkeerd ingevuld (Opgelost)

Offline DriesA - 28/05/2011 17:13
Avatar van DriesALid Hoi,

ik geraak maar niet wijs uit de fout die ik nu tegen kom.

In mijn model heb ik volgende functie staan:
  1. public function getSingleWithUserPass($username, $password)
  2. {
  3. $select = $this->select();
  4. $where = $this->getAdapter()->quoteInto('username = ? and password = ? ', strtolower($username), md5($password));
  5. $select->where($where);
  6. return $this->fetchRow($select);
  7. }


Wanneer ik in het begin of op het einde van de functie de waarden van 'username' en 'password' via var_dump uitlees, hebben deze de correcte waarden.
Wanneer ik echter vlak voor de return via var_dump de waarde van $select uitlees, krijg ik op het einde te zien dat de waarde voor 'password' even de waarde is van 'username'.

Bv. stel dat in het begin van de functie $username = 'admin' en $password = 'adminpass', dan zijn deze waarde nog correct op het einde (vlak voor de return). Maar de where clausule ziet er dan als volgt uit:
'where username = "admin" and password = "admin"'.

Ziet iemand wat ik hier fout doe?

Mvg,
Dries

6 antwoorden

Gesponsorde links
Offline Stijn - 28/05/2011 20:22
Avatar van Stijn PHP expert Welke fout geeft ZF of wat gaat er mis? De vraagtekens worden niet ingevuld ofzo? Is de tweede parameter van de quoteInto functie geen array van parameters? Bekijk de documentatie nog eens goed van de quoteInto methode.
Bedankt door: DriesA
Offline DriesA - 30/05/2011 14:04
Avatar van DriesA Lid Hoi Stijn,

Wanneer ik via var_dump de waardes vraag van $username en $password, krijg ik in beide gevallen 'string' met de juiste waarde. Het is dus al geen array die wordt doorgegeven.
Wanneer ik via var_dump de waarde van $select vraag net voor de return, krijg ik onderaan mij select te zien en de vraagtekens zijn wel ingevuld, maar op de plaats van de tweede vraagtekens staat de waarde van de eerste parameter.

Het ligt niet echt aan de waarde van mijn parameters, eerder aan de volgorde lijkt me.
Ik heb namelijk ook mijn select eens aangepast met in de where clausule:
  1. $where = $this->getAdapter()->quoteInto('password = ? and username = ? ', md5($password),strtolower($username));


Waneer ik dit doe, en via var_dump de waarde van $select vraag vlak voor de return, krijg ik mijn select te zien en de vraagtekens zijn 2x opgevuld met de waarde van md5($password).

Het lijkt me dus dat hij de tweede parameter niet wil gebruiken om in te vullen maar gewoon de eerste parameter gebruikt op de plaats van alle vraagtekenens.
Offline Ibrahim - 30/05/2011 20:40
Avatar van Ibrahim PHP expert hij heeft het meer over de inhoud van de $where variabele. Worden de vraagtekens wel vervangen met hun respectievelijke waarden?
Bedankt door: DriesA
Offline DriesA - 01/06/2011 20:47
Avatar van DriesA Lid Ahzo,

Net even gecontroleerd, hieronder de output van var_dump van $username, $password en $where vlak voor de return:

$password = string(13) "administrator"
$username = string(5) "admin"
$where = string(42) "username = 'admin' and password = 'admin' "

Het invullen in de where is blijkbaar al verkeerd, al zie ik niet in wat er fout staat.
Offline dotPixel - 02/06/2011 16:30 (laatste wijziging 02/06/2011 16:31)
Avatar van dotPixel PHP interesse http://framewor...apter.html kijk eens goed naar de documentatie.  

Citaat:
The most typical usage of quoting is to interpolate a PHP variable into a SQL expression or statement. You can use the quoteInto() method to do this in one step. This method takes two arguments: the first argument is a string containing a placeholder symbol (?), and the second argument is a value or PHP variable that should be substituted for that placeholder.


http://tech.ami...tion-marks/
Bedankt door: DriesA
Offline DriesA - 02/06/2011 21:31
Avatar van DriesA Lid Schitterend! Bedankt voor het antwoord 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s