Éléments communs

Dans le jeu de fonctions sql_* certains paramètres sont présents systématiquement et signifient la même information. Voici donc ces paramètres pour ne pas répéter maintes fois les mêmes choses :

  • $serveur (ou $connect) est le nom du fichier de connexion SQL (dans le répertoire config/. Non renseigné ou vide, c’est le fichier de connexion défini à l’installation de SPIP qui est utilisé. C’est en général l’avant dernier paramètre des fonctions d’abstractions SQL.
  • $options vaut true par défaut et permet d’indiquer un caractère optionnel par son intermédiaire. Ce paramètre est en général le dernier des fonctions d’abstractions SQL. Il admet :
    • true : toute fonction dans l’API SQL et non trouvée sur le jeu d’instruction SQL du serveur demandé provoquera une erreur fatale.
    • 'continue' : pas d’erreur fatale si la fonction n’est pas trouvée.
    • et false : la fonction du jeu SQL n’exécute pas la requête quelle aura calculée, mais doit la retourner (on obtient donc une chaine de caractère qui est une requête SQL valide pour le gestionnaire de base de données demandé).

D’autres paramètres sont parfois présents d’une fonction à l’autre, en particulier pour toutes les fonctions qui s’apparentent à sql_select() en reprenant tout ou partie de ses paramètres :

  • $select, tableau des colonnes sql à récupérer,
  • $from, tableau des tables SQL à utiliser,
  • $where, tableau de contraintes sur les colonnes où chaque élément du tableau sera agrégé avec AND,
  • $groupby, tableau les groupements des résultats,
  • $orderby, tableau définissant l’ordonnancement des résultats,
  • $limit, chaine indiquant le nombre de résultat à obtenir,
  • $having tableau de post-contraintes pour les fonctions d’agrégation.

Dans les fonctions de modification de contenu, on rencontre un paramètre commun :

  • $desc, est un tableau de description des colonnes de la table SQL utilisée. S’il est omis, la description sera calculée automatiquement si les fonctions de portage en ont besoin.

Principes d’écriture

Un grand nombre de paramètres sont tolérants dans le type d’argument qui leur est envoyé, acceptant tableaux ou chaînes de caractères. C’est le cas par exemple des paramètres de sql_select(). Son premier paramètre est $select correspondant à la liste des colonnes SQL à récupérer. Voici 4 écritures fonctionnelles pour ce paramètre :

// 1 element
sql_select('id_article', 'spip_articles');
sql_select(array('id_article'), 'spip_articles');
// 2 elements
sql_select('id_article, titre', 'spip_articles');
sql_select(array('id_article', 'titre'), 'spip_articles');

Par convention, qui n’a rien d’obligatoire, on préférera utiliser l’écriture tabulaire dès qu’il y a plus d’un élément, écriture plus facilement analysable par les fonctions traduisant l’écriture abstraite en requête SQL.

Préfixe des tables

Les fonctions sql_* remplacent le nom des tables SQL dans la requête qui commencent par « spip_ » (comme « spip_articles ») par le préfixe de table utilisé sur votre base de données. Ainsi, l’appel suivant fonctionnera quelque soit le préfixe de table utilisé :

sql_select('titre', 'spip_articles', 'id_article=' . sql_quote(1));

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français