|
Categorieën >
Object georiënteerd
[ZF]Where wordt verkeerd ingevuld (Opgelost)
|
|
|
offline
|
Lid
|
Hoi,
ik geraak maar niet wijs uit de fout die ik nu tegen kom.
In mijn model heb ik volgende functie staan:
public function getSingleWithUserPass($username, $password)
{
$select = $this->select();
$where = $this->getAdapter()->quoteInto('username = ? and password = ? ', strtolower($username), md5($password));
$select->where($where);
return $this->fetchRow($select);
}
public function getSingleWithUserPass($username, $password) { $select = $this->select(); $where = $this->getAdapter()->quoteInto('username = ? and password = ? ', strtolower($username), md5($password)); $select->where($where); return $this->fetchRow($select); }
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
|
|
|
offline
|
Content Manager
|
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.
|
|
|
|
offline
|
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:
$where = $this->getAdapter()->quoteInto('password = ? and username = ? ', md5($password),strtolower($username));
$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
|
Crew Javascript
|
hij heeft het meer over de inhoud van de $where variabele. Worden de vraagtekens wel vervangen met hun respectievelijke waarden?
|
|
|
|
offline
|
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.
|
dotPixel – 02/06/2011 16:30 (Laatst gewijzigd op 02/06/2011 16:31)
|
|
offline
|
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/
|
|
|
|
offline
|
Lid
|
Schitterend! Bedankt voor het antwoord
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|