La fonction sql_quote()
sert à protéger du contenu (apostrophes) afin d’éviter toute injection SQL. Cette fonction est très importante et doit être utilisée dès qu’un contenu provient d’une saisie utilisateur. Les fonctions sql_insertq
, sql_updateq
, sql_replace
effectuent automatiquement cette protection pour les données insérées (mais pas pour les autres paramètres comme $where
qu’il faut tout de même protéger).
Elle accepte 3 paramètres :
-
$val
est l’expression à protéger, -
$serveur
, -
$type
optionnel, est le type de valeur attendu. Peut valoirint
pour un entier.
Elle s’utilise comme cela :
$oiseau = sql_quote("L'oiseau");
$champ = sql_quote($champ);
sql_select('colonne', 'table', 'titre=' . sql_quote($titre));
sql_updateq('table', array('colonne'=>'valeur'), 'titre=' . sql_quote($titre));
Lorsqu’un identifiant numérique est attendu, c’est souvent le cas des clés primaires, la protection peut être de simplement appliquer la fonction PHP intval()
(La valeur zéro sera retournée si le contenu passé n’est pas numérique) :
$id_table = intval(_request('id_table'));
sql_select('colonne', 'table', 'id_table=' . intval($id));