Archief - PHP: where statement

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Steven

Legacy Member
$_SESSION['name'] is een sessievariabele
in een mysql query lukt dit niet:


WHERE Var = $_SESSION['name']

Ik krijg natuurlijk deze error:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Hoe moet ik dit stukje juist schrijven.

passero

Legacy Member
als je dat zo wil gebruiken is het:

where var = $_SESSION[name]

Dus zonder de ' '
voorbeeld:

$q = "select * from table where var = $_SESSION[name] order by field ";

natuurlijk als name een string is en geen getal wordt het wel:

$q = "select * from table where var = '$_SESSION[name]' order by field ";

xml

Legacy Member
Beter:

PHP:
$q = "SELECT * FROM table WHERE var = '".$_SESSION['name']."' ORDER BY field";

killgore

Legacy Member
nog beter:

NIET BLINDELINGS GLOBALS GEBRUIKEN!

tot zover mijn bijdrage.

(kvraag me af hoe vaak ik dat nog ga moeten zeggen <_<)

tikketim

Legacy Member
beter die globals dan in een variable zetten of hoe bedoel je killgore ?

zo dus :
PHP:
$name = $_SESSION['name'];
$q = "SELECT * FROM table WHERE var = '".$name."' ORDER BY field";

killgore

Legacy Member
neen, als je een global gaat gebruiken altijd controles doen, escapen, ... en inderdaad in een lokale variabele zetten na controle, iets als dit dus:

$name = isset($_SESSION['name'])? make_safe($_SESSION['name']) : "";

Natuurlijk, bij sessions zal je die make_safe meestal niet moeten doen als je verstandig code omdat de gebruiker normaal gezien nihil invloed heeft op de session-inhoud, maar er geldt altijd: "better safe than sorry" :).

Maar het minste dat je op een global toch moet doen is controleren of hij geset is. Werken zal het meestal wel doen, maar het blijft foute code en het is beter gewoon voor alle globals hetzelfde stramien toe te passen... .
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan