Hallo,

Ik heb hier een script liggen waarbij elke query (waar het om een int gaat), (int) voor staat. Waarom is dat zo? Werkt dat soms sneller?

VB:


$sql = 'SELECT name FROM users WHERE id = '.(int)$id.';


Mvg, gaahtt
(int) zorgt er vorlgens mij voor dat hij alleen de eerste numerieke waarde van de variabele geeft.

bijv.

<?php

$str = "5-gfdy";
echo (int) $str; // = 5

?>

Dus het is in die voorbeeld query onnodig aangezien id (in het voorbeeld) altijd numeriek is.
Jah, maar stel dat je als waarde
' or name=''

invoert dan heb je een SQL injectie lek te pakken.
Sommige mensen lossen dit op met type-casting naar (int), maar de beste manier is toch om mysql_real_escape_string() eroverheen te gooien.
We kennen dit fenomeen als typecasting, of in de php manual: type juggling. Zie bijvoorbeeld mijn "rank" (titel als je het zelf instelt), dat getypecast word naar "true".

EDIT: Klaasjan, explain yourself, volg je even niet.
/Offtopic:
Wow! Afra, jouw titel is echt goed verzonnen! En je hebt zo'n gelijk :)

Reageren