Ik heb een webapplicatie die op basis van username en password een gebruiker in de database (MySQL) selecteert. Dit gebeurt op de volgende manier:
(Query is vereenvoudigd)
Het probleem is dat PHP een rij zou moeten retourneren. Als ik de string in $query print naar de browser en deze in mijn MySQL tool (SQLyog) uitvoer, dan krijg ik één rij terug: de beoogde rij. In PHP krijg ik niks terug.
Haal ik echter de INNER JOIN's en alles in het WHERE-statement weg uit de query in PHP, dan retourneert hij wel een berg data.
Wat ik heb gecontroleerd:
"Overschrijven is sneller" dacht ik, en "het is toch maar een ontwikkeldatabase". If I've ever regret something, this is it.
Verder maak ik bij al mijn tabellen gebruik van het type InnoDB.
Mijn vraag: heeft iemand hier een idee waar het nog meer aan zou kunnen liggen?
(Query is vereenvoudigd)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| $query = sprintf(" SELECT usr.id , usr.username , usr.password , CONCAT(usr.firstname, ' ', usr.lastname) AS 'title' FROM users usr INNER JOIN users_in_usergroups uiu ON uiu.usr_id = usr.id INNER JOIN usergroups usg ON usg.id = uiu.usg_id INNER JOIN rights_in_usergroups riu ON riu.usg_id = usg.id INNER JOIN rights rgt ON rgt.id = riu.rgt_id WHERE usr.username = '%s' AND usr.password = '%s' AND usr.active = 1 AND usg.active = 1 " , $username , $password ); |
Het probleem is dat PHP een rij zou moeten retourneren. Als ik de string in $query print naar de browser en deze in mijn MySQL tool (SQLyog) uitvoer, dan krijg ik één rij terug: de beoogde rij. In PHP krijg ik niks terug.
Haal ik echter de INNER JOIN's en alles in het WHERE-statement weg uit de query in PHP, dan retourneert hij wel een berg data.
Wat ik heb gecontroleerd:
- Gebruik ik dezelfde MySQL server? Ja
- Gebruik ik dezelfde database? Ja
- Verbind ik met de MySQL server met dezelfde user/pass? Ja
- Doet de query het zelf wel? Ja (geeft in PHP 0 rijen, in SQLyog 1 rij)
- Is mijn code verder foutloos? Ja
"Overschrijven is sneller" dacht ik, en "het is toch maar een ontwikkeldatabase". If I've ever regret something, this is it.
Verder maak ik bij al mijn tabellen gebruik van het type InnoDB.
Mijn vraag: heeft iemand hier een idee waar het nog meer aan zou kunnen liggen?
[ Voor 1% gewijzigd door JaFFoG op 13-08-2008 15:31 . Reden: Inhoud DB overschreven, DB zelf niet! ]
Bla