INTRODUCTION

Inclusion et Héritage

L'objet Infos étend l'objet Listing (class Infos extends Listing), il faut donc que les deux fichiers de classes soient inclus en même temps :

require("Listing.class.php");
require("Infos.class.php");

Il est bien entendu possible d'utiliser la fonction spl_autoload_register() pour inclure les fichiers de classe automatiquement quand elles sont apellées dans le code. Exemple de fonction d'autoload :

function autoload ($classname) {
    require_once('classes/'.$classname.'.class.php');
}
spl_autoload_register('autoload');

Instanciation et prérequis

Altitude utilise l'extension PDO de PHP pour fonctionner. Vous devez donc vous assurer de son activation dans le fichier php.ini de votre serveur.

Les deux objets Listing et Infos utilisent une instance de l'objet PDO pour communiquer avec le serveur de base de données. Cette instance est créée automatiquement, avec des options par défaut, au moment de l'instanciation de l'objet Listing ou Infos. Cependant si vous souhaitez définir des options spécifiques, elle peut être définie en dehors, puis passée à l'objet au moment de la création.
Quoi qu'il en soit, afin d'utiliser une connexion à la base de données, il faut impérativement définir les cinq constantes suivantes :

define ("HOST", "localhost");				// Nom de l'hôte du serveur MySQL
define ("USER", "username");				// Utilisateur SQL
define ("PASS", "********");				// Mot de passe
define ("BASE", "database");				// Nom de la base de données MySQL
define ("DSN",  "mysql:dbname=".BASE.";host=".HOST);	// Ou bien, pour une base SQLite :
// define("DSN","sqlite:path/to/altitude-example.sqlite");

Par défaut l'instance PDO est créée avec l'option PDO::ATTR_ERRMODE sur PDO::ERRMODE_EXCEPTION. Pour MySQL seulement, l'attribut PDO::ATTR_PERSISTENT est défini sur True, et requête "SET NAMES 'utf8'" est faite au moment de l'instanciation (cf. la fonction statique protégée newPDO() à la ligne 426 de la classe "Listing").

En résumé, une fois les cinq constantes définies avec les bons paramètres de connexion à la base de données, vous pouvez utiliser les objets Listing et Infos.

Concepts importants

  • IDENTIFICATION : Nous partons du principe que toutes les tables de la base de données contiennent une colonne nommée "id" (en minuscule).
  • JOINTURES : Les jointures peuvent fonctionner même avec le type de table 'MyISAM'. Pour cette raison nous n'utilisons pas la commande 'JOIN' de SQL, mais plutôt un système rapide de détection, défini dans la configuration.
    Pour pouvoir retrouver les jointures, la contante FOREIGNKEYS_PREFIX doit être définie. Vous pouvez mettre le préfixe que vous souhaitez. Par exemple :
    define ("FOREIGNKEYS_PREFIX", "FK_");
    Ensuite un tableau décrivant les relations entre les colonnes des différentes tables est nécessaire. Ce tableau doit être nommé $RELATIONS (en majuscules). Par exemple:
    $RELATIONS = Array(
        "FK_user_ID"	=> Array('table' => "users",	'alias' => 'user'),
        "FK_item_ID"	=> Array('table' => "items",	'alias' => 'item'),
        "FK_comment_ID"	=> Array('table' => "comments",	'alias' => 'comment')
    );
  • DATES : Altitude a aussi besoin de savoir quelles colonnes pourront contenir des dates, afin de pouvoir les reformater au format ISO 8601. Il faut pour cela définir le tableau $DATE_FIELDS (en majuscules) dans la configuration, contenant une liste des noms de champs susceptibles d'être des dates. Par exemple :
    $DATE_FIELDS = Array(
        "date",
        "last_action",
        "date_creation"
    );
    Ensuite, il est possible de mettre à jour automatiquement deux colonnes lors de la sauvegarde d'une entrée. Ces colonnes correspondent à la date de création, et la date de dernière modification. Pour cela, il faut définir les deux constantes DATE_CREATION et LAST_UPDATE, contenant les noms de colonnes à mettre à jour. Par exemple :
    define ("DATE_CREATION", "date_creation");
    define ("LAST_UPDATE", "last_action");
    Notez que si elles ne sont pas définies, aucune erreur ne sera renvoyée, mais l'automatisation ne fonctionnera pas.


L'objet "LISTING"

Propriétés

$request

STRING — Résultat de la chaine compilée par getList() au moment de la requête SQL

$result

ARRAY — Résultat des entrées retournées par getList()

$pdo

OBJECT — Instance PDO pour la connexion SQL

$pdoDriver

STRING — Nom du driver utilisé pour la connexion PDO ('mysql' ou 'sqlite')

$table

STRING — Nom de la table courante

$cols

STRING — Noms des colonnes à récupérer, séparés par des virgules, ou * pour toutes les colonnes.

$sortBy

STRING — Nom de la colonne servant au tri des résultats.

$order

STRING — Direction du tri : 'ASC' pour ascendant, 'DESC' pour descendant.

$filter_key

STRING — Nom de la colonne à utiliser pour filtrer les résultats

$filter_val

STRING — Valeur à utiliser pour filtrer les résultats

$lastFilterLogic

STRING — Dernier type d'opération utilisé pour le filtrage multiple (AND, OR, NAND, NOR...)

$isFiltred

BOOLEAN — True si le résultat est filtré, False sinon

$filters

ARRAY — Tableau contenant tout les filtres SQL

$filterSQL

STRING — Partie de la requête SQL concernant le filtrage (pour l'écrire "à la main")

Méthodes

__construct()

LISTING de table SQL : initialisation

__construct(
	OBJECT $pdoInstance = false
)

Paramètres

OBJECT $pdoInstance Une instance de PDO préinitialisée (optionnel)

getList()

Initialise une liste de données à récupérer pour une table donnée.

getList(
	STRING $table, STRING $want = '*', STRING $tri = 'id', STRING $ordre = 'ASC',
	STRING $filter_key = false, STRING $filter_comp = '=', STRING $filter_val = null,
	INT $limit = false, BOOLEAN $withFK = true, BOOLEAN $decodeJson = true,
	BOOLEAN $parseDatesJS = true
) : ARRAY

Paramètres

STRING $table Le nom de la table
STRING $want Une liste de noms de colonnes à retourner, séparés par des virgules (default '*' (tout))
STRING $sortBy La colonne à utiliser pour le tri (default 'id')
STRING $order La direction du tri (default 'ASC')
STRING $filter_key La colonne à utiliser pour filtrer les résultats (default FALSE (pas de filtre))
STRING $filter_comp La comparaison à effectuer pour le filtrage (default '=')
STRING $filter_val La valeur à utiliser pour filtrer les résultats (default null)
INT $limit Nombre maximum de données à retourner (default FALSE (pas de limite)
BOOLEAN $withFK TRUE pour récupérer les données JOINTES (cf. concepts importants) (default TRUE)
BOOLEAN $decodeJson TRUE pour décoder les champs contenant du JSON automatiquement. FALSE pour avoir les champs JSON au format STRING (default TRUE)
BOOLEAN $parseDatesJS TRUE pour formater les dates (cf. concepts importants) au format ISO 8601 pour javascript (default TRUE)

Retourne

ARRAY — Le tableau des résultats, ou FALSE si aucune donnée.

countResults()

Retourne le nombre d'entrées trouvées.

countResults() : INT

Retourne

INT — Le nombre d'entrées trouvées.

addFilter()

Ajoute une condition au filtre pour la requête.

addFilter(
	STRING $filter_key = false, STRING $filter_comp = '=',
	STRING $filter_val = false, STRING $logic = 'AND'
)

Paramètres

STRING $filter_key Le nom du champ pour le filtre
STRING $filter_comp La comparaison à utiliser pour le filtre (default "=")
STRING $filter_val La valeur à comparer
STRING $logic Le type de logique à utiliser avec les éventuels précédents filtres (default "AND")

addFilterRaw()

Ajoute une condition au filtre pour la requête, en mode "moins sécurisé", afin de permettre les fonctions SQL à la place d'une simple chaîne pour $filter_val.

addFilterRaw(
	STRING $filter_key = false, STRING $filter_comp = '=',
	STRING $filter_val = false, STRING $logic = 'AND'
)

Paramètres

STRING $filter_key Le nom du champ pour le filtre
STRING $filter_comp La comparaison à utiliser pour le filtre (default "=")
STRING $filter_val La valeur à comparer
STRING $logic Le type de logique à utiliser avec les éventuels précédents filtres (default "AND")

resetFilter()

Réinitialise le filtrage (pour effectuer une nouvelle requête, par ex.)

resetFilter()

setFilterSQL()

Défini un filtre "à la main" en SQL pur.

setFilterSQL(
	STRING $filtre
)

Paramètres

STRING $filtre Le filtre SQL (ex. "id >= 30 AND date <= NOW()")

reindexList()

Renvoie un tableau où l'index est $wantedIndex au lieu de 0,1,2,3,...

reindexList(
	STRING $wantedIndex = null
) : ARRAY

Parameters

STRING $wantedIndex Le nom du champ à utiliser comme index

Returns

ARRAY — Le nouveau tableau avec l'index remplacé, FALSE si erreur.

getCols()

STATIC Retourne un tableau contenant tout les noms de colonnes d'une table.

Listing::getCols(
	STRING $table = false
) : ARRAY

Paramètres

STRING $table Le nom de la table

Retourne

ARRAY — Un tableau décrivant les colonnes de la table, FALSE si erreur

getMax()

STATIC Fonction utilitaire statique pour récupérer la valeur maxi d'une colonne.

Listing::getMax(
	STRING $table, STRING $column
) : MIXED

Paramètres

STRING $table Le nom de la table
STRING $column Le nom du champ

Retourne

MIXED — La valeur la plus grande (chaîne la + longue, nombre le + grand, date la plus récente...) du champ, ou FALSE si aucun résultat.

getAIval()

STATIC Retourne la valeur du prochain auto-incrément d'une table.

Listing::getAIval(
	STRING $table
) : INT

Paramètres

STRING $table Le nom de la table

Retourne

INT — La valeur du prochain auto-incrément de la table.

array_reindex_by()

STATIC Fonction utilitaire statique pour réindexer un tableau selon une colonne.

Listing::array_reindex_by(
	ARRAY $array, STRING $colIndex = 'id', ARRAY $includeCols = null
) : ARRAY

Paramètres

ARRAY $array Le tableau à réindexer
STRING $column Le nom de la colonne à utiliser pour l'index du tableau
ARRAY $includeCols Les valeurs à remettre dans le tableau. Utiliser une liste (array) de noms de colonnes (default null -> toutes les colonnes)

Retourne

ARRAY — Le tableau réindexé selon une colonne, ou FALSE si erreur

newPDO()

STATIC Fonction statique protégée pour créer une instance de PDO.

Listing::newPDO()

initPDO()

Initialisation de l'objet PDO.

initPDO()

check_table_exists()

Vérifie si une table existe dans la base de données.

check_table_exists(
	STRING $table
) : BOOLEAN

Paramètres

STRING $table Le nom de la table

Retourne

BOOLEAN — True si la table existe dans la base.

check_col_exists()

Vérifie si un champ existe dans la table actuelle.

check_col_exists(
	STRING $column
) : BOOLEAN

Paramètres

STRING $column Le nom du champ

Retourne

BOOLEAN — True si le champ existe dans la table.

getForeignKey()

Récupère les données d'une jointure, selon la configuration (cf. Concepts importants).

getForeignKey(
	STRING $k, INT $v, BOOLEAN $decodeJson = true, BOOLEAN $parseDatesJS = true
) : ARRAY

Paramètres

STRING $k Le nom de la clé dont on veut la jointure (origine)
INT $v La valeur à rechercher (ID de la destination)
BOOLEAN $decodeJson TRUE pour décoder les champs contenant du JSON automatiquement. FALSE pour avoir les champs JSON au format STRING (default TRUE)
BOOLEAN $parseDatesJS TRUE pour formater les dates au format ISO 8601 pour javascript (default TRUE)

Retourne

ARRAY — Une paire (clé, valeur) de la jointure trouvée. La clé est l'alias de la jointure (cf. Concepts importants), et la valeur est un tableau contenant les données de la jointure trouvée. FALSE si aucune jointure trouvée.

Exceptions

Voici une liste des exceptions qui peuvent apparaître lors de l'utilisation de l'objet Listing, et leur signification.

Exceptions pour getList()

Listing::getList() : Table '$table' doesn't exists

Ceci signifie que la table spécifiée n'existe pas dans la base. Vérifiez le paramètre $table que vous passez à getList().

Exceptions pour addFilter()

Listing::addFilter() : Missing column name for filter

Ceci signifie qu'il manque le nom de la colonne pour le filtre. Choisissez une colonne dans la table courante, et passez son nom en paramètre $filter_key de addFilter().

Listing::addFilter() : Missing value for filter search

Ceci signifie qu'il manque la valeur à rechercher pour la colonne spécifiée dans la table courante. Passez une valeur en paramètre $filter_val de addFilter().

Exceptions pour addFilterRaw()

Listing::addFilterRaw() : Missing column name for filter

Ceci signifie qu'il manque le nom de la colonne pour le filtre. Choisissez une colonne dans la table courante, et passez son nom en paramètre $filter_key de addFilterRaw().

Listing::addFilterRaw() : Missing value for filter search

Ceci signifie qu'il manque la valeur à rechercher pour la colonne spécifiée dans la table courante. Passez une valeur en paramètre $filter_val de addFilterRaw().

Exceptions pour reindexList()

Listing::reindexList() : '$wantedIndex' is not an unique index for table '$this->table'

Ceci signifie que la colonne choisie pour la réindexation n'est pas un index unique. Il pourrait en résulter un écrasement de champ dans le tableau retourné, donc Altitude renvoie une exception. Choisissez une colonne qui a un index unique (comme l'ID par ex.) et passez son nom en paramètre $wantedIndex de reindexList().

D'autres exceptions peuvent apparaître, il s'agit sûrement d'exceptions envoyées par PDO lui-même.



L'objet "INFOS"

Voici les propriétés et méthodes spécifiques à l'objet Infos :

Propriétés

La classe Infos hérite des propriétés et des méthodes publiques de la classe Listing, il est donc inutile de les rapeller ici.

$data

ARRAY — Tableau contenant les informations de l'entrée trouvée.

$loaded

BOOLEAN — TRUE si la BDD a déjà été lue (pour vérifier avant 'update' ou 'insert' -> cf. méthode save()).

Méthodes

__construct()

RÉCUPÉRATION du contenu d'une entrée de table SQL : Initialisation

__construct(
	STRING $table, OBJECT $pdoInstance = false
)

Paramètres

STRING $table Le nom de la table SQL
OBJECT $pdoInstance Une instance de PDO préinitialisée (optionnel)

setTable()

Définition de la table où rechercher / ajouter une entrée.

setTable(
	STRING $table
)

Paramètres

STRING $table Le nom de la table SQL

getTable()

Retourne le nom de la table courante.

getTable() : STRING

Retourne

STRING — Le nom de la table courante.

loadInfos()

Charge une entrée selon un filtrage basique. Renvoie une erreur si plusieurs entrées ont été trouvées.

loadInfos(
	STRING $filtreKey, STRING $filtreVal,
	BOOLEAN $withFK = true, BOOLEAN $decodeJson = true, BOOLEAN $parseDatesJS = true
)

Paramètres

STRING $filtreKey Le nom de la colonne pour le filtre
STRING $filtreVal La valeur du champ pour le filtre
BOOLEAN $withFK TRUE pour récupérer les données JOINTES (default TRUE)
BOOLEAN $decodeJson TRUE pour décoder les champs contenant du JSON automatiquement.
FALSE pour avoir les champs JSON au format STRING (default TRUE)
BOOLEAN $parseDatesJS TRUE pour formater les dates au format ISO 8601 pour javascript (default TRUE)

isLoaded()

Vérifie si les infos ont déjà été chargées.

isLoaded() : BOOLEAN

Retourne

BOOLEAN — TRUE si les infos ont déjà été chargées depuis la BDD.

getInfo()

Récupération de la valeur d'une colonne spécifiée.

getInfo(
	STRING $column = "*"
) : MIXED

Paramètres

STRING $column Le nom du champ dont on veut l'info

Retourne

MIXED — La valeur de l'info demandée, FALSE si aucune info trouvée

getManyInfos()

Récupération de plusieurs infos spécifiées, ou de toutes les infos de l'entrée en mémoire.

getManyInfos(
	ARRAY|STRING $columns = "*"
) : ARRAY

Paramètres

ARRAY|STRING $columns Le nom des colonnes dont on veut l'info, dans un tableau, ou une chaîne séparés par des virgules (default '*' -> toutes les infos)

Retourne

ARRAY — Un tableau contenant les infos demandées, tableau vide si aucune info trouvée.

countInfos()

Compte le nombre d'infos en mémoire (colonnes).

countInfos() : INT

Retourne

INT — Le nombre d'infos (colonnes).

setInfo()

Ajoute / modifie une info dans la mémoire.

(
	STRING $key, STRING $val
)

Paramètres

STRING $key Le nom de la colonne
STRING $val La valeur du champ

setManyInfos()

Modifie plusieurs infos d'une entrée dans la mémoire (permet de vérifier l'intégrité de l'entrée, en terme de colonnes).

setManyInfos(
	ARRAY $newInfos,
	BOOLEAN $allowAddCol = false, BOOLEAN $checkMissing = false, BOOLEAN $forceID = false
)

Paramètres

ARRAY $newInfos Un tableau avec les nouvelles valeurs pour les colonnes de l'entrée
BOOLEAN $allowAddCol TRUE pour ignorer les colonnes en trop, FALSE pour permettre l'ajout de colonnes non existantes (default FALSE)
BOOLEAN $checkMissing TRUE pour vérifier qu'il ne manque pas de colonne (renvoie une erreur), FALSE pour laisser MySQL remplir les valeurs manquantes (default FALSE)
BOOLEAN $forceID TRUE pour obliger la redéfinition de la colonne "id", FALSE pour l'ignorer et laisser MySQL faire son auto-incrément (default FALSE)

save()

MISE À JOUR (SAVE) d'une entrée dans la table courante.

save(
	STRING $filterKey = 'id', STRING $filterVal = 'this',
	BOOLEAN $autoAddCol = true, BOOLEAN $autoDate = true
) : STRING 

Paramètres

STRING $filterKey Le nom de la colonne à utiliser pour identifier l'entrée (default 'id')
STRING $filterVal L'identifiant à utiliser (default 'this' -> correspond à l'entrée actuelle)
BOOLEAN $autoAddCol TRUE pour ajouter la(les) colonne(s) si elle(s) n'existe(nt) pas
BOOLEAN $autoDate TRUE pour mettre à jour le champ de dernière modification avec la date courante, et la date de création dans le cas d'un INSERT, si la colonne est présente. (default TRUE)

Retourne

STRING — Le type de requête SQL qui vient d'être utilisée pour le save ('UPDATE', ou 'INSERT')

delete()

Supprime une (ou plusieurs) entrée(s) de la base de données.

delete(
	STRING $filterKey = 'id', STRING $filterVal = 'this', STRING $filtrePlus = null
) : INT

Paramètres

STRING $filterKey Le nom de la colonne à utiliser pour identifier l'entrée (default 'id')
STRING $filterVal L'identifiant à utiliser (default 'this' -> correspond à l'entrée actuelle)
STRING $filtrePlus Un flitre additionnel à ajouter à la requête SQL pour identifier l'entrée (optionnel)

Retourne

INT — Le nombre de lignes supprimées.

colExists()

STATIC Vérifie si une colonne existe dans la table courante.

Infos::colExists(
	STRING $table, STRING $colName
) : BOOLEAN

Paramètres

STRING $table Le nom de la table
STRING $colName Le nom de la colonne

Retourne

BOOLEAN — TRUE si la colonne existe, FALSE sinon.

colIndex_isUnique()

STATIC Vérifie si une colonne a un index UNIQUE (c'est à dire si elle peut avoir la même valeur pour plusieurs entrées).

Infos::colIndex_isUnique(
	STRING $table, STRING $colName
) : BOOLEAN

Paramètres

STRING $table Le nom de la table
STRING $colName Le nom de la colonne à vérifier

Retourne

BOOLEAN — TRUE si la colonne a un index Unique, FALSE sinon.

addNewCol()

STATIC Ajoute une colonne dans une table de la base de données.

Infos::addNewCol(
	STRING $table, STRING $colName, STRING $colType = 'VARCHAR(64)', STRING $defaultVal = ''
) : BOOLEAN

Paramètres

STRING $table Le nom de la table
STRING $colName Le nom de la nouvelle colonne
STRING $colType Le type de colonne à créer (default "VARCHAR(64)")
STRING $defaultVal La valeur par défaut pour la colonne (optionnel, et inutile pour le type "TEXT")

Retourne

BOOLEAN — TRUE si succès, FALSE si erreur.

removeCol()

STATIC Supprime une colonne d'une table de la base de données. Attention : incompatible avec SQLite pour le moment.

Infos::removeCol(
	STRING $table, STRING $colName
) : BOOLEAN

Paramètres

STRING $table Le nom de la table
STRING $colName Le nom de la colonne à supprimer

Retourne

BOOLEAN — TRUE si succès, FALSE si erreur.

createMissingCols()

Vérifie si tous les champs existent, sinon création de la colonne à la volée.

createMissingCols()

autoAddCol()

Ajoute une colonne à la table courante, avec choix du type automatique.

autoAddCol(
	STRING $colName, STRING $val
) : BOOLEAN

Paramètres

STRING $colName Le nom de la colonne
STRING $val La valeur de la colonne (pour le check auto du type de colonne)

Retourne

BOOLEAN — TRUE si succès, FALSE si échec.

Exceptions

Voici une liste des exceptions qui peuvent apparaître lors de l'utilisation de l'objet Infos, et leur signification.

Exceptions pour __construct()

Infos::__construct() : missing table name

Ceci signifie qu'il manque la table à utiliser pour rechercher l'entrée. Choisissez une table dans la base de données, et passez son nom en paramètre $table de new Infos().

Exceptions pour setTable()

Infos::setTable() : Table '$table' doesn't exists

Ceci signifie que la table spécifiée n'existe pas dans la base de données. Choisissez une table dans la base de données, et passez son nom en paramètre $table de setTable().

Exceptions pour loadInfos()

Infos::loadInfos() : Several entries ($number) found for '$filtreKey = $filtreVal'! Please refine your filter

Ceci signifie que plusieurs entrées ont été trouvées pour la recherche. L'objet Infos ayant été concu pour travailler sur une entrée précise d'une table de la base, il renvoie une exception quand le résultat est multiple. Choisissez un filtrage plus précis pour trouver l'entrée en changeant les paramètres $filtreKey et $filtreVal pour loadInfos().

Exceptions pour getInfo()

Infos::getInfo() : Missing column name

Ceci signifie qu'il manque le nom de la colonne à retourner pour l'entrée courante. Choisissez une colonne dans la table de l'entrée courante, et passez son nom en paramètre $column de getInfo().

Exceptions pour setManyInfos()

Infos::setManyInfos() : 'newInfos' must be an array ($type found)

Ceci signifie que le type de variable pour le paramètre $newInfos n'est pas un tableau. Pour modifier l'entrée courante avec la méthode setManyInfos(), vous devez passer un tableau associatif contenant les valeurs à changer. Chaque clé du tableau étant le nom de la colonne, et sa valeur la nouvelle valeur pour cette colonne.

Infos::setManyInfos() : missing $number columns in array 'newInfos', compared to current table ('$table'). List of missing columns: json_encode($missingRows)

Quand le paramètre $checkMissing de setManyInfos() est à True, la méthode va effectuer une vérification de la liste des clés du tableau $newInfos pour voir s'il n'en manque pas. Cette exception est donc envoyée quand il manque des colonnes dans le tableau, et donne une liste des colonnes manquantes.

Exceptions pour save()

Infos::save() : Duplicate entry for `$key`="$val" in table '$table'.

Ceci signifie qu'une des valeurs de l'entrée à sauvegarder existe déjà dans la base de données, à cause d'une colonne qui a un index unique. Modifiez la nouvelle valeur d'entrée avant d'apeller save().

Infos::save() : table '$table' -> $msg.

Infos::save() : '.$error

Ces deux exceptions sont envoyées quand PDO rencontre une erreur. Le détail de l'erreur est spécifié dans le message.

Exceptions pour addNewCol()

Infos::addNewCol() : Missing table name

Ceci signifie qu'il manque le nom de la table dans laquelle ajouter la colonne.

Infos::addNewCol() : Missing column name

Ceci signifie qu'il manque le nom de la colonne à ajouter dans la table.

Infos::addNewCol() : This column already exists

Ceci signifie que la colonne est déjà présente dans la table. Choisissez un autre nom de colonne.

Exceptions pour removeCol()

Infos::removeCol() : SQLite3 limitation: you can't drop a column from a table with 'ALTER TABLE' statement.

Cette exception est renvoyée quand le driver PDO utilisé est 'sqlite'. À cause d'une limitation de la fonction ALTER en SQLite, le DROP n'étant pas disponible, cette méthode est pour l'instant inutilisable. Vous devrez faire l'opération "à la main" via une console SQLite.

D'autres exceptions peuvent apparaître, il s'agit sûrement d'exceptions envoyées par PDO lui-même.



Licence

Copyright © 2015 - Paul MAILLARDET - Polosson

Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la “GNU General Public License” telle que publiée par la Free Software Foundation : soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.

Ce programme est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale Publique GNU pour plus de détails.

Vous devriez avoir reçu une copie de la Licence Générale Publique GNU avec ce programme ; si ce n’est pas le cas, consultez : www.gnu.org/licenses/agpl-3.0.html.