/** * Échapper une valeur selon son type * mais pour SQLite avec ses spécificités * * @param string|array|number $v * Texte, nombre ou tableau à échapper * @param string $type * Description du type attendu * (par exemple description SQL de la colonne recevant la donnée) * @return string|number * Donnée prête à être utilisée par le gestionnaire SQL */ function spip_sqlite_quote($v, $type = '') { if (!is_array($v)) { return _sqlite_calculer_cite($v, $type); } // si c'est un tableau, le parcourir en propageant le type foreach ($v as $k => $r) { $v[$k] = spip_sqlite_quote($r, $type); } return join(",", $v); }
function _sqlite_calculer_cite($v, $type) { if (sql_test_date($type) AND preg_match('/^\w+\(/', $v)) return $v; if (sql_test_int($type)) { if (is_numeric($v)) return $v; if (ctype_xdigit(substr($v,2)) AND strncmp($v,'0x',2)==0) return hexdec(substr($v,2)); } //else return ("'" . spip_sqlite_quote($v) . "'"); return (spip_sqlite_quote($v)); }