/** * Exécute une requête de sélection avec SQLite * * Instance de sql_select (voir ses specs). * * @see sql_select() * * @param string|array $select Champs sélectionnés * @param string|array $from Tables sélectionnées * @param string|array $where Contraintes * @param string|array $groupby Regroupements * @param string|array $orderby Tris * @param string $limit Limites de résultats * @param string|array $having Contraintes posts sélections * @param string $serveur Nom de la connexion * @param bool $requeter Exécuter la requête, sinon la retourner * @return array|bool|resource|string * - string : Texte de la requête si on ne l'exécute pas * - ressource si requête exécutée, ressource pour fetch() * - false si la requête exécutée a ratée * - array : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer. */ function spip_sqlite_select($select, $from, $where = '', $groupby = '', $orderby = '', $limit = '', $having = '', $serveur = '', $requeter = true) { // version() n'est pas connu de sqlite $select = str_replace('version()', 'sqlite_version()', $select); // recomposer from $from = !is_array($from) ? $from : _sqlite_calculer_select_as($from); $query = _sqlite_calculer_expression('SELECT', $select, ', ') . _sqlite_calculer_expression('FROM', $from, ', ') . _sqlite_calculer_expression('WHERE', $where) . _sqlite_calculer_expression('GROUP BY', $groupby, ',') . _sqlite_calculer_expression('HAVING', $having) . ($orderby ? "\nORDER BY " . _sqlite_calculer_order($orderby) : '') . ($limit ? "\nLIMIT {$limit}" : ''); // dans un select, on doit renvoyer la requête en cas d'erreur $res = spip_sqlite_query($query, $serveur, $requeter); // texte de la requete demande ? if (!$requeter) { return $res; } // erreur survenue ? if ($res === false) { return spip_sqlite::traduire_requete($query, $serveur); } return $res; }
function spip_sqlite_select($select, $from, $where='', $groupby='', $orderby='', $limit='', $having='', $serveur='',$requeter=true) { // version() n'est pas connu de sqlite $select = str_replace('version()', 'sqlite_version()',$select); // recomposer from $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from)); $query = _sqlite_calculer_expression('SELECT', $select, ', ') . _sqlite_calculer_expression('FROM', $from, ', ') . _sqlite_calculer_expression('WHERE', $where) . _sqlite_calculer_expression('GROUP BY', $groupby, ',') . _sqlite_calculer_expression('HAVING', $having) . ($orderby ? ("\nORDER BY " . _sqlite_calculer_order($orderby)) :'') . ($limit ? "\nLIMIT $limit" : ''); return spip_sqlite_query($query, $serveur, $requeter); }