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 :
-
$valest l’expression à protéger, -
$serveur, -
$typeoptionnel, est le type de valeur attendu. Peut valoirintpour 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));