Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
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);
}