/** * Prépare une clause WHERE pour SQLite * * Retourne une chaîne avec les bonnes parenthèses pour la * contrainte indiquée, au format donnée par le compilateur * * @param array|string $v * Description des contraintes * - string : Texte du where * - sinon tableau : A et B peuvent être de type string ou array, * OP et C sont de type string : * - array(A) : A est le texte du where * - array(OP, A) : contrainte OP( A ) * - array(OP, A, B) : contrainte (A OP B) * - array(OP, A, B, C) : contrainte (A OP (B) : C) * @return string * Contrainte pour clause WHERE */ function _sqlite_calculer_where($v) { if (!is_array($v)) { return $v; } $op = array_shift($v); if (!($n = count($v))) { return $op; } else { $arg = _sqlite_calculer_where(array_shift($v)); if ($n == 1) { return "{$op}({$arg})"; } else { $arg2 = _sqlite_calculer_where(array_shift($v)); if ($n == 2) { return "({$arg} {$op} {$arg2})"; } else { return "({$arg} {$op} ({$arg2}) : {$v['0']})"; } } } }
function _sqlite_calculer_where($v){ if (!is_array($v)) return $v ; $op = array_shift($v); if (!($n=count($v))) return $op; else { $arg = _sqlite_calculer_where(array_shift($v)); if ($n==1) { return "$op($arg)"; } else { $arg2 = _sqlite_calculer_where(array_shift($v)); if ($n==2) { return "($arg $op $arg2)"; } else return "($arg $op ($arg2) : $v[0])"; } } }