PHP
PHP / MySql

Recherche
 
ManuelPHP.com

sqlite_column
<<<
sqlite_create_aggregate sqlite_create_function
>>>

8.124 Fonctions SQLite
8 Référence des fonctions
 Manuel PHP

Introduction
Installation
Pré-requis
Types de ressources
Constantes pré-définies
Classes pré-définies
Configuration à l'exécution
sqlite_array_query
sqlite_busy_timeout
sqlite_changes
sqlite_close
sqlite_column
->sqlite_create_aggregate
sqlite_create_function
sqlite_current
sqlite_error_string
sqlite_escape_string
sqlite_exec
sqlite_factory
sqlite_fetch_all
sqlite_fetch_array
sqlite_fetch_column_types
sqlite_fetch_object
sqlite_fetch_single
sqlite_fetch_string
sqlite_field_name
sqlite_has_more
sqlite_has_prev
sqlite_key
sqlite_last_error
sqlite_last_insert_rowid
sqlite_libencoding
sqlite_libversion
sqlite_next
sqlite_num_fields
sqlite_num_rows
sqlite_open
sqlite_popen
sqlite_prev
sqlite_query
sqlite_rewind
sqlite_seek
sqlite_single_query
sqlite_udf_decode_binary
sqlite_udf_encode_binary
sqlite_unbuffered_query
sqlite_valid

8.124.13 sqlite_create_aggregate()SQLiteDatabase->createAggregate()Enregistre une UDF agregeante pour les requêtes SQLite

[ Exemples avec sqlite_create_aggregate ]   PHP 5

void  sqlite_create_aggregate ( resource   dbhandle , string   function_name , callback   step_func , callback   finalize_func , int   num_args )

Style orienté objet (méthode)

SQLiteDatabase void  createAggregate ( string   function_name , callback   step_func , callback   finalize_func , int   num_args )

sqlite_create_aggregate est similaire à sqlite_create_function , car elle enregistre une fonction qui sera utilisée pour calculer un résultat agrégé sur plusieurs lignes d'une requête.

La différence principale entre cette fonction et sqlite_create_function est que deux fonctions sont nécessaires pour gérer les agrégations : step_func est appelée pour chaque ligne du résultat. Votre fonction PHP doit accumuler le résultat, et le stocker dans le contexte d'agrégation. Une fois que toutes les lignes ont été appelées, finalize_func sera appelée, et elle doit alors lire les données dans ce contexte d'agrégation, et en retourner le résultat. Les fonctions de callback doivent retourner un type compréhensible par SQLite (i.e. type scalaire ).

    dbhandle
    La ressource de base de données SQLite; retournée par sqlite_open lorsqu'utilisée de manière procédurale. Ce paramètre n'est pas requis si vous utilisez la méthode orientée objet.
    function_name
    Le nom de la fonction utilisée dans les requêtes SQL.
    step_func
    Fonction de procédure de rappel appelée pour chaque ligne du jeu de résultats.
    finalize_func
    Fonction de procédure de rappel pour le contexte d'agrégation des données de chaque ligne.
    num_args
    Conseil à l'analyseur SQLite si la fonction de procédure de rappel accepte un nombre prédéterminé d'arguments.

Exemple d'UDF SQLite : taille maximale de chaîne

<?php
$data
= array(
   
'one',
   
'two',
   
'three',
   
'four',
   
'five',
   
'six',
   
'seven',
   
'eight',
   
'nine',
   
'ten'
   
);
$db = sqlite_open(':memory:');
sqlite_query($db, "CREATE TABLE strings(a)");
foreach (
$data as $str) {
    
$str = sqlite_escape_string($str);
    
sqlite_query($db, "INSERT INTO strings VALUES('$str')");
}

function
max_len_step(&$context, $string)
{
  if (
strlen($string) > $context) {
    
$context = strlen($string);
  }
}

function
max_len_finalize(&$context)
{
  return
$context;
}

sqlite_create_aggregate($db, 'max_len', 'max_len_step', 'max_len_finalize');

var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));

?>

Dans cet exemple, nous créons une fonction d'agrégation qui va calculer la taille de la plus longue chaîne dans l'une des colonnes de la table. Pour chaque ligne, la fonction max_len_step est appelée, et reçoit le paramètre context . Le contexte est une autre variable PHP, et il peut contenir un tableau ou même un objet. Dans notre exemple, nous l'utilisons pour stocker la taille maximale de la colonne courante. Si string est plus grand que la valeur maximale que nous avons enregistrée, nous modifions notre contexte en conséquence.

Une fois que toutes les lignes ont été traitées, SQLite appelle la fonction max_len_finalize pour déterminer le résultat de l'agrégation. Nous pourrions alors effectuer plusieurs calculs en fonction des données que nous avons récoltées dans context . Dans notre exemple simple, nous avons calculé le résultat au fur et à mesure de la progression de la requête, ce qui nous permet de n'avoir qu'à retourner la valeur de notre contexte.

Note

L'exemple ci-dessus ne fonctionnera pas correctement si une colonne contient une donnée binaire. Reportez-vous à la fonction sqlite_udf_decode_binary pour plus de détails, et d'un exemple pour travailler avec des chaînes binaires.

Array Array

<< sqlite_create_aggregate >>
sqlite_column Fonctions SQLite sqlite_create_function





Google

Services webmasters

Les manuels
 

ManuelPHP.com © 2003-2012 Tigersun - Crédits
Webmaster Site Internet - Télécharger des Logiciels - Programme TV - Entraide Informatique - Agence de Communication
2012-05-25