[MySQL+PHP] Where != '$iets"

Pagina: 1
Acties:
  • 213 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Ik had een stuk in mijn PHP script staan, dat een heel stel rijen opvroeg, om daarna de helft te dumpen en de helft te gebruiken met een simpele if (blaat=blaat) dan weergeven anders niet.

Nu dacht ik: Dat kan veel directer met MySQL. Dus ik maak gebruik van:
"SELECT * FROM $tabel WHERE accesslevel='$accesslevel_weergeven' ORDER by $sorteer ASC"

Deze query staat een paar keer in het script, met steeds iets anders voor $accesslevel_weergeven, express, want op 1 plaats in het script wilde ik alles laten weergeven, behalve enkele mogelijkheden. En toen begon het googlen en proberen:

"SELECT * FROM $tabel WHERE accesslevel != '10' AND accesslevel != '1' accesslevel != '0' ORDER by $sorteer ASC" - nope

"SELECT * FROM $tabel WHERE accesslevel ! '10' AND accesslevel ! '1' accesslevel ! '0' ORDER by $sorteer ASC" - nope

Op de MySQL website vind ik wel mogelijkheden met < en > , maar dat is niet wat ik zoek. Ben ik nu toch weer op php aangewezen en kan ik alles weer terugzetten?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Wat werkt er dan niet? Je eerste variant zou in principe moeten werken, behalve dat je nog een AND bent vergeten:
SQL:
1
2
SELECT * FROM Tabel
WHERE accesslevel != 10 AND acceslevel != 1 AND accesslevel != 0

Overigens kun je voor dit soort dingen ook wel IN gebruiken:
SQL:
1
SELECT * FROM Tabel WHERE acceslevel NOT IN (10, 1, 0)

Acties:
  • 0 Henk 'm!

Verwijderd

haal de quotes even weg, where iets != 0, je vergelijkt nl een getal met elkaar en niet tekst. Als je tekst doet gebruik je quotes en 'is not'

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Dat is onzin, CreateIt. Je mag alle waarden quoten die je maar wil, wat hun type ook is. MySQL is geen PHP.

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Hardstikke bedankt Soultaker! Beide manieren werken prima, ik was gewoon die 2e AND vergeten, en omdat ik dit niet eerder gedaan had dacht ik meteen dat ik iets erg verkeerd deed.
Ik gebruik nu de 2e oplossing, korter, en duidelijker :) thx !

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Soultaker schreef op 17 juli 2004 @ 16:42:
Dat is onzin, CreateIt. Je mag alle waarden quoten die je maar wil, wat hun type ook is. MySQL is geen PHP.
Desalniettemin heeft MySQL 4 (of 3.x ook al?) toch (met name bij het gebruik van indices) de voorkeur voor un-quoted integers (anders pakt hij de index niet)

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

soultaker:

't mag, maar 't is krom
mysql lijkt wat dat betreft juist op PHP: 't maakt allemaal niet zo veel uit of je wel of geen quotes gebruikt rond getallen.

maar 't is gewoon bad practice om getallen te voorzien van quotes..

Acties:
  • 0 Henk 'm!

Verwijderd

Soultaker schreef op 17 juli 2004 @ 16:42:
Dat is onzin, CreateIt. Je mag alle waarden quoten die je maar wil, wat hun type ook is. MySQL is geen PHP.
Das geen onzin, das zoals 't moet. DAT het eventueel werkt zonder/met wanneer dit niet/wel moet, wil niet zeggen dat het correct is. Sterker nog, bij sommige zaken kan dit een hersenbreker zijn bij debuggen.

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Ik quote het express: Soms gebruik je weleens een variabele met een spatie, dan krijg je gekke dingen.

Ook heb ik geleerd dat je er zo goed mogelijk voor moet zorgen dat iets niet-hackbaar is. Goed de input afschermen, en zorgen dat door een gekke inhoud niet meteen iets veranders kan worden. Met quotes eromheen scheelt dat toch weer iets (nadat je altijd addslashes gebruikt bij de input). Zo kan een sommetje oid nooit gaan werken.
Of ik helemaal correct ben weet ik niet, zo lang programmeer ik ook weer niet in PHP...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

pierre-oord schreef op 17 juli 2004 @ 17:33:
Ik quote het express: Soms gebruik je weleens een variabele met een spatie, dan krijg je gekke dingen.

Ook heb ik geleerd dat je er zo goed mogelijk voor moet zorgen dat iets niet-hackbaar is. Goed de input afschermen, en zorgen dat door een gekke inhoud niet meteen iets veranders kan worden. Met quotes eromheen scheelt dat toch weer iets (nadat je altijd addslashes gebruikt bij de input). Zo kan een sommetje oid nooit gaan werken.
Of ik helemaal correct ben weet ik niet, zo lang programmeer ik ook weer niet in PHP...
Als accesslevel van een integer type is, dan is quoten gewoon niet nodig, en zelfs alleen maar verwarrend. Ook levert het geen enkel beveiligingsvoordeel op. Doe het dus liever niet. :)

'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.

Pagina: 1