Le traitement des hexadécimaux en PG oblige à introduire une nouvelle fonction...
Le traitement des hexadécimaux en PG oblige à introduire une nouvelle fonction d'abstraction encodant ces valeurs. Comme dans [10433], [10131], [10146] et [10154] on rallonge la liste des fonctions d'abstraction de [10113]:
{{{
'hex' => fonction d'abstraction de la représentation d'un hexadécimal
}}}
Il faut donc utiliser '''sql_hex("FFBB")''' pour envoyer ce genre de valeurs aux serveurs SQL. A noter d'ailleurs qu'il ne faut pas utiliser '''intval''' comme outil de sécurité si le nombre est un grand entier, car PHP le tronque sans prévenir alors que les serveurs SQL l'auraient accepté.
Pour éviter une révision générale de SPIP et ses extensions, l'analyse des arguments SQL devient plus précise. Intuitivement il s'agit d'utiliser '''is_numeric''' mais PHP n'en est pas à une incohérence près; ceci
{{{
<?php
echo is_numeric('0x1234567') ? '1' : '0';;
echo is_numeric('0x12345678') ? '1' : '0';;
echo is_numeric('0x123456789') ? '1' : '0';;
echo is_numeric('0x123456789A') ? '1' : '0';;
?>
}}}
répond-il ''0000' ou ''0101'' ou ''0011'' ou ''1111'' ?
Attention, contraitement aux apparences, la bonne réponse n'est pas '''c'est nul'''.
Chargement en cours
Veuillez vous inscrire ou vous se connecter pour commenter