Fichier ecrire/base/abstract_sql.php

Definition de l'API SQL

Ce fichier definit la couche d'abstraction entre SPIP et ses serveurs SQL. Cette version 1 est un ensemble de fonctions ecrites rapidement pour generaliser le code strictement MySQL de SPIP <= 1.9.2 Des retouches sont a prevoir apres l'experience des premiers portages. Les symboles sql_* (constantes et nom de fonctions) sont reserves a cette interface, sans quoi le gestionnaire de version dysfonctionnera.

Version

Source

Proposer une amélioration

Liste des constantes

Liste des fonctions

APIs

Retourne toutes les lignes de resultat d'une selection comme si l'on appelait successivement sql_select() puis while(sql_fetch())

array sql_allfetsel( array | string $select = array() , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. array | string $select = array()

    Liste des champs a recuperer (Select)

  2. array | string $from = array()

    Tables a consulter (From)

  3. array | string $where = array()

    Conditions a remplir (Where)

  4. array | string $groupby = array()

    Critere de regroupement (Group by)

  5. array | string $orderby = array()

    Tableau de classement (Order By)

  6. string $limit = ''

    Critere de limite (Limit)

  7. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  8. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

  9. boolean | string $option = true

    Peut avoir 3 valeurs :

    • true -> executer la requete.
    • continue -> ne pas echouer en cas de serveur sql indisponible.
    • false -> ne pas l'executer mais la retourner.

Retour

  • array

    Tableau de toutes les lignes de resultat de la selection Chaque entree contient un tableau des elements demandees dans le SELECT. {@example

      array(
        array('id_rubrique' => 1, 'id_secteur' => 2)
        array('id_rubrique' => 4, 'id_secteur' => 2)
        ...
      )

    }

API

Exemples

  •  $rubs = sql_allfetsel('id_rubrique', 'spip_articles', 'id_secteur='.sql_quote($id_secteur));
    // $rubs = array(array('id_rubrique'=>1), array('id_rubrique'=>3, ...)

Package

Proposer une amélioration
array sql_alltable( string $spip = null , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $spip = null

    Filtre sur tables retournées

    • NULL : retourne les tables SPIP uniquement (tables préfixées avec le préfixe de la connexion)
    • '%' : retourne toutes les tables de la base
  2. string $serveur = ''

    Le nom du connecteur

  3. boolean | string $option = true

    Peut avoir 3 valeurs :

    • false -> ne pas l'executer mais la retourner,
    • continue -> ne pas echouer en cas de serveur sql indisponible,
    • true -> executer la requete.

Retour

  • array

    Liste des tables SQL

API

Utilise

Package

Proposer une amélioration

Effectue une opération ALTER.

mixed sql_alter( string $q , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $q

    La requête à exécuter (sans la préceder de 'ALTER ')

  2. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true : exécuter la requete
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • mixed

    2 possibilités :

    - Incertain en cas d'exécution correcte de la requête
    - false en cas de serveur indiponible ou d'erreur
    
    Ce retour n'est pas pertinent pour savoir si l'opération est correctement réalisée.

API

Exemples

  • sql_alter('DROP COLUMN supprimer');

Package

Proposer une amélioration
boolean | string sql_count( \Ressource $res , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. \Ressource $res

    Ressource SQL

  2. string $serveur = ''

    Nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true -> executer la requete
    - continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • int Nombre de lignes,
    • false en cas d'erreur.

API

Voir également

Package

Proposer une amélioration

Ramène seulement et tout de suite le nombre de lignes Pas de colonne ni de tri à donner donc.

integer | boolean sql_countsel( array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array $having = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. array | string $from = array()

    Tables a consulter (From)

  2. array | string $where = array()

    Conditions a remplir (Where)

  3. array | string $groupby = array()

    Critere de regroupement (Group by)

  4. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  5. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

  6. boolean | string $option = true

    Peut avoir 3 valeurs :

    • false -> ne pas l'executer mais la retourner,
    • continue -> ne pas echouer en cas de serveur sql indisponible,
    • true -> executer la requete.

Retour

  • integer | boolean
    • Nombre de lignes de resultat
    • ou false en cas d'erreur

API

Exemples

  • if (sql_countsel('spip_mots_liens', array(
        "objet=".sql_quote('article'),
        "id_article=".sql_quote($id_article)) > 0) {
            // ...
    }

Voir également

Package

Proposer une amélioration
boolean sql_create( string $nom , array $champs , array $cles = array() , boolean $autoinc = false , boolean $temporary = false , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $nom

    Nom de la table

  2. array $champs

    Couples (colonne => description)

  3. array $cles = array()

    Clé (nomdelaclef => champ)

  4. boolean $autoinc = false

    Si un champ est clef primaire est numérique alors la propriété d’autoincrémentation sera ajoutée

  5. boolean $temporary = false

    true pour créer une table temporaire (au sens SQL)

  6. string $serveur = ''

    Nom du connecteur

  7. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - 'continue' : ne pas échouer en cas de serveur SQL indisponible,
    - true : exécuter la requete.

Retour

  • boolean

    true si succès, false en cas d'echec

API

Exemples

  • sql_create("spip_tables",
      array(
          "id_table" => "bigint(20) NOT NULL default '0'",
          "colonne1"=> "varchar(3) NOT NULL default 'oui'",
          "colonne2"=> "text NOT NULL default ''"
       ),
       array(
          'PRIMARY KEY' => "id_table",
          'KEY colonne1' => "colonne1"
       )
    );

Package

Proposer une amélioration
boolean sql_create_base( string $nom , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $nom

    Nom de la base (sans l'extension de fichier si gestionnaire SQLite)

  2. string $serveur = ''

    Nom de la connexion

  3. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean

    true si la base est créee.

API

Package

Proposer une amélioration
boolean | string sql_create_view( string $nom , string $select_query , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $nom

    Nom de la vue

  2. string $select_query

    Une requête SELECT, idéalement crée avec sql_get_select(...)

  3. string $serveur = ''

    Nom du connecteur

  4. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • true si succès,
    • texte de la requête si demandé
    • false en cas d'échec.

API

Package

Proposer une amélioration
string | boolean sql_date_proche( string $champ , integer $interval , string $unite , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $champ

    Nom du champ a tester

  2. integer $interval

    Valeur de l'intervalle : -1, 4, ...

  3. string $unite

    Utité utilisée (DAY, MONTH, YEAR, ...)

  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true pour exécuter la demande.
    - 'continue' pour ne pas échouer en cas de serveur SQL indisponible.

Retour

  • string | boolean
    • string : Expression SQL
    • false si le serveur SQL est indisponible

API

Package

Proposer une amélioration
boolean | string sql_delete( string $table , string | array $where = '' , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. string | array $where = ''

    Conditions à vérifier

  3. string $serveur = ''

    Nom du connecteur

  4. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • int : nombre de suppressions réalisées,
    • Texte de la requête si demandé,
    • False en cas d'erreur.

API

Exemples

  • sql_delete('spip_articles', 'id_article='.sql_quote($id_article));

Package

Proposer une amélioration
boolean sql_demarrer_transaction( string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

  2. boolean | string $option = true

    Peut avoir 3 valeurs :

    • true pour executer la requete.
    • continue pour ne pas echouer en cas de serveur sql indisponible.
    • false pour obtenir le code de la requete

Retour

  • boolean

    true si la transaction est demarree false en cas d'erreur

API

Package

Proposer une amélioration
boolean | string sql_drop_table( string $table , string $exist = '' , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table

  2. string $exist = ''

    true pour ajouter un test sur l'existence de la table, false sinon

  3. string $serveur = ''

    Nom du connecteur

  4. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • True en cas de succès,
    • Texte de la requête si demandé,
    • False en cas d'erreur.

API

Voir également

Package

Proposer une amélioration
boolean | string sql_drop_view( string $table , string $exist = '' , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $table

    Nom de la vue SQL

  2. string $exist = ''

    True pour ajouter un test d'existence avant de supprimer

  3. string $serveur = ''

    Nom de la connexion

  4. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • string Texte de la requête si demandé
    • true si la requête a réussie, false sinon

API

Package

Proposer une amélioration
boolean | integer sql_errno( string $serveur = '' )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

Retour

  • boolean | integer

    Numéro de l'erreur False si le serveur est indisponible

API

Package

Proposer une amélioration
boolean | string sql_error( string $serveur = '' )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

Retour

  • boolean | string

    Description de l'erreur False si le serveur est indisponible

API

Package

Proposer une amélioration
array sql_explain( string $q , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $q

    Texte de la requête

  2. string $serveur = ''

    Nom de la connexion

  3. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • array

    Tableau de l'explication

API

Package

Proposer une amélioration

Retourne un resultat d'une ressource obtenue avec sql_select()

array sql_fetch( mixed $res , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. mixed $res

    Ressource retournee par sql_select()

  2. string $serveur = ''

    Le nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true -> executer la requete
    • continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • array

    Tableau de cles (colonnes SQL ou alias) / valeurs (valeurs dans la colonne de la table ou calculee) presentant une ligne de resultat d'une selection

API

Package

Proposer une amélioration

Retourne tous les resultats d'une ressource obtenue avec sql_select() dans un tableau

array sql_fetch_all( mixed $res , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. mixed $res

    Ressource retournee par sql_select()

  2. string $serveur = ''

    Le nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true -> executer la requete
    • continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • array

    Tableau contenant les enregistrements. Chaque entree du tableau est un autre tableau de cles (colonnes SQL ou alias) / valeurs (valeurs dans la colonne de la table ou calculee) presentant une ligne de resultat d'une selection

API

Package

Proposer une amélioration

Retourne la première ligne de résultat d'une sélection comme si l'on appelait successivement sql_select() puis sql_fetch()

array sql_fetsel( array | string $select = array() , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. array | string $select = array()

    Liste des champs a recuperer (Select)

  2. array | string $from = array()

    Tables a consulter (From)

  3. array | string $where = array()

    Conditions a remplir (Where)

  4. array | string $groupby = array()

    Critere de regroupement (Group by)

  5. array | string $orderby = array()

    Tableau de classement (Order By)

  6. string $limit = ''

    Critere de limite (Limit)

  7. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  8. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

  9. boolean | string $option = true

    Peut avoir 3 valeurs :

    • true -> executer la requete.
    • continue -> ne pas echouer en cas de serveur sql indisponible.
    • false -> ne pas l'executer mais la retourner.

Retour

  • array

    Tableau de la premiere ligne de resultat de la selection tel que array('id_rubrique' => 1, 'id_secteur' => 2)

API

Exemples

  • $art = sql_fetsel(array('id_rubrique','id_secteur'), 'spip_articles', 'id_article='.sql_quote($id_article));
    $id_rubrique = $art['id_rubrique'];

Voir également

Utilisé par

Package

Proposer une amélioration

Formater une date Y-m-d H:i:s sans passer par mktime qui ne sait pas gerer les dates < 1970

string sql_format_date( integer $annee , integer $mois , integer $jour , integer $h , integer $m , integer $s , string $serveur = '' )

Paramètres

  1. integer $annee

    Annee

  2. integer $mois

    Numero du mois

  3. integer $jour

    Numero du jour dans le mois

  4. integer $h

    Heures

  5. integer $m

    Minutes

  6. integer $s

    Secondes

  7. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

Retour

  • string

    La date formatee

API

Package

Proposer une amélioration

Demande si un charset (tel que utf-8) est disponible sur le gestionnaire de base de données de la connexion utilisée

string | boolean sql_get_charset( string $charset , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $charset

    Le charset souhaité

  2. string $serveur = ''

    Le nom du connecteur

  3. boolean $option = true

    Inutilise

Retour

  • string | boolean

    Retourne le nom du charset si effectivement trouvé, sinon false.

API

Package

Proposer une amélioration

Passe simplement $option a false au lieu de true sans obliger a renseigner tous les arguments de sql_select. Les autres parametres sont identiques.

mixed sql_get_select( array | string $select = array() , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' )

Paramètres

  1. array | string $select = array()

    Liste des champs a recuperer (Select)

  2. array | string $from = array()

    Tables a consulter (From)

  3. array | string $where = array()

    Conditions a remplir (Where)

  4. array | string $groupby = array()

    Critere de regroupement (Group by)

  5. array | string $orderby = array()

    Tableau de classement (Order By)

  6. string $limit = ''

    Critere de limite (Limit)

  7. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  8. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

Retour

  • mixed

    Chaine contenant la requete ou false en cas d'erreur

API

Utilise

Package

Proposer une amélioration

Retourne dans la premiere ligne de resultat d'une selection un unique champ demande

mixed sql_getfetsel( array | string $select , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. array | string $select

    Liste des champs à récupérer (Select)

  2. array | string $from = array()

    Tables à consulter (From)

  3. array | string $where = array()

    Conditions à remplir (Where)

  4. array | string $groupby = array()

    Critère de regroupement (Group by)

  5. array | string $orderby = array()

    Tableau de classement (Order By)

  6. string $limit = ''

    Critère de limite (Limit)

  7. array $having = array()

    Tableau des des post-conditions à remplir (Having)

  8. string $serveur = ''

    Le serveur sollicité (pour retrouver la connexion)

  9. boolean | string $option = true

    Peut avoir 3 valeurs :

    - true -> executer la requete.
    - continue -> ne pas echouer en cas de serveur sql indisponible.
    - false -> ne pas l'executer mais la retourner.

Retour

  • mixed

    Contenu de l'unique valeur demandee du premier enregistrement retourne ou NULL si la requete ne retourne aucun enregistrement

API

Exemples

  • $id_rubrique = sql_getfetsel('id_rubrique', 'spip_articles', 'id_article='.sql_quote($id_article));

Utilise

Package

Proposer une amélioration

Prend une chaîne sur l'aphabet hexa et retourne sa représentation numérique attendue par le serveur SQL. Par exemple : FF ==> 0xFF en MySQL mais x'FF' en PG

string sql_hex( string $val , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $val

    Chaine hexadécimale

  2. string $serveur = ''

    Nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true pour exécuter la demande.
    - 'continue' pour ne pas échouer en cas de serveur SQL indisponible.

Retour

  • string

    Valeur hexadécimale attendue par le serveur SQL

API

Package

Proposer une amélioration

Retourne un code à insérer dans une requête SQL pour récupérer les éléments d'une colonne qui appartiennent à une liste donnée

string sql_in( string $val , string | array $valeurs , string $not = '' , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $val

    Colonne SQL sur laquelle appliquer le test

  2. string | array $valeurs

    Liste des valeurs possibles (séparés par des virgules si string)

  3. string $not = ''
    • '' sélectionne les éléments correspondant aux valeurs
    • 'NOT' inverse en sélectionnant les éléments ne correspondant pas aux valeurs
  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 2 valeurs :

    • continue -> ne pas echouer en cas de serveur sql indisponible
    • true ou false -> retourne l'expression

Retour

  • string

    Expression de requête SQL

API

Exemples

  • sql_in('id_rubrique', array(3,4,5)) retourne approximativement «id_rubrique IN (3,4,5)» selon ce qu'attend le gestionnaire de base de donnée du connecteur en cours.

Package

Proposer une amélioration

Sélectionne les données (comme sql_select()) et prépare avec l'expression IN

string sql_in_select( string $in , array | string $select , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' )

Paramètres

  1. string $in

    Colonne SQL sur laquelle appliquer le test

  2. array | string $select

    Liste des champs à récupérer (Select). La donnée extraite est le premier élément de la sélection.

  3. array | string $from = array()

    Tables a consulter (From)

  4. array | string $where = array()

    Conditions a remplir (Where)

  5. array | string $groupby = array()

    Critere de regroupement (Group by)

  6. array | string $orderby = array()

    Tableau de classement (Order By)

  7. string $limit = ''

    Critere de limite (Limit)

  8. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  9. string $serveur = ''

    Nom du connecteur

Retour

  • string

    Expression de requête SQL

API

Voir également

Package

Note

  • Penser à dire dans la description du serveur s'il accepte les requêtes imbriquées afin d'optimiser ca
Proposer une amélioration

Protègera chaque valeur comme sql_quote.

boolean | string sql_insertq( string $table , array $couples = array() , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. array $couples = array()

    Tableau (nom => valeur)

  3. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • int|true identifiant de l'élément inséré (si possible), ou true, si réussite
    • Texte de la requête si demandé,
    • False en cas d'erreur.

API

Exemples

  • $titre = _request('titre');
    $id = sql_insertq('spip_rubriques', array('titre' => $titre));

Package

Proposer une amélioration

Insère en une opération plusieurs éléments au schéma identique dans une table de la base de données. Lorsque les portages le permettent, ils utilisent une seule requête SQL pour réaliser l’ajout.

boolean | string sql_insertq_multi( string $table , array $couples = array() , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. array $couples = array()

    Tableau de tableaux associatifs (nom => valeur)

  3. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • True en cas de succès,
    • Texte de la requête si demandé,
    • False en cas d'erreur.

API

Voir également

Package

Proposer une amélioration

Retourne un tableau du nom de toutes les bases de donnees accessibles avec les permissions de l'utilisateur SQL de cette connexion. Attention on n'a pas toujours les droits !

array | boolean sql_listdbs( string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

  2. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true -> executer la requete
    • continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • array | boolean

    Tableau contenant chaque nom de base de donnees. False en cas d'erreur.

API

Package

Proposer une amélioration

Cette sélection est mise dans l'alias multi (instruction AS multi).

string sql_multi( string $sel , string $lang , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $sel

    Colonne ayant le texte

  2. string $lang

    Langue à extraire

  3. string $serveur = ''

    Nom du connecteur

  4. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • string

    Texte de sélection pour la requête

API

Exemples

  • $t = sql_multi('chapo', 'fr');

Package

Proposer une amélioration
boolean sql_optimize( string $table , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $table

    Nom de la table

  2. string $serveur = ''

    Nom de la connexion

  3. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean

    Toujours true

API

Package

Proposer une amélioration

Cette fonction experimentale est pour l'instant presente pour accelerer certaines insertions multiples en SQLite, en les encadrant d'une transaction. SQLite ne cree alors qu'un verrou pour l'ensemble des insertions et non un pour chaque, ce qui accelere grandement le processus. Evidemment, si une des insertions echoue, rien ne sera enregistre. Pour ne pas perturber les autres moteurs, cette fonction permet de verifier que le moteur prefere utiliser des transactions dans ce cas.

boolean sql_preferer_transaction( string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

  2. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true pour executer la requete.
    • continue pour ne pas echouer en cas de serveur sql indisponible.

Retour

  • boolean

    Le serveur SQL prefere t'il des transactions pour les insertions multiples ?

API

Exemples

  •  if (sql_preferer_transaction()) {
      sql_demarrer_transaction();
    }

Package

Proposer une amélioration

Fonction la plus générale ... et la moins portable À n'utiliser qu'en dernière extrémité

array | resource | string | boolean sql_query( string $ins , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $ins

    Requête

  2. string $serveur = ''

    Nom de la connexion

  3. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • array | resource | string | boolean
    • string : Texte de la requête si on ne l'exécute pas
    • ressource|bool : Si requête exécutée
    • array : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.

API

Package

Proposer une amélioration

Echappe du contenu selon ce qu'attend le type de serveur SQL et en fonction du type de contenu.

Permet entre autres de se protéger d'injections SQL.

Cette fonction est automatiquement appelée par les fonctions sql_*q tel que sql_instertq ou sql_updateq

string sql_quote( string $val , string $serveur = '' , string $type = '' )

Paramètres

  1. string $val

    Chaine à echapper

  2. string $serveur = ''

    Nom du connecteur

  3. string $type = ''

    Peut contenir une declaration de type de champ SQL. Exemple : int NOT NULL qui sert alors aussi à calculer le type d'échappement

Retour

  • string

    La chaine echappee

API

Package

Proposer une amélioration
boolean | string sql_repair( string $table , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. string $serveur = ''

    Nom de la connexion

  3. boolean $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • string Texte de la requête si demandée,
    • true si la requête a réussie, false sinon

API

Package

Proposer une amélioration

Deplace le pointeur sur un numéro de ligne précisé sur une ressource issue de sql_select, afin que le prochain sql_fetch récupère cette ligne.

boolean sql_seek( mixed $res , integer $row_number , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. mixed $res

    Ressource issue de sql_select

  2. integer $row_number

    Numero de ligne sur laquelle placer le pointeur

  3. string $serveur = ''

    Le nom du connecteur

  4. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true -> executer la requete
    • continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • boolean

    Operation effectuée (true), sinon false.

API

Package

Proposer une amélioration

Fonction de selection (SELECT), retournant la ressource interrogeable par sql_fetch.

mixed sql_select( array | string $select = array() , array | string $from = array() , array | string $where = array() , array | string $groupby = array() , array | string $orderby = array() , string $limit = '' , array $having = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. array | string $select = array()

    Liste des champs a recuperer (Select)

  2. array | string $from = array()

    Tables a consulter (From)

  3. array | string $where = array()

    Conditions a remplir (Where)

  4. array | string $groupby = array()

    Critere de regroupement (Group by)

  5. array | string $orderby = array()

    Tableau de classement (Order By)

  6. string $limit = ''

    Critere de limite (Limit)

  7. array $having = array()

    Tableau des des post-conditions a remplir (Having)

  8. string $serveur = ''

    Le serveur sollicite (pour retrouver la connexion)

  9. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false -> ne pas l'exécuter mais la retourner,
    - continue -> ne pas echouer en cas de serveur sql indisponible,
    - true|array -> executer la requête.
    Le cas array est, pour une requete produite par le compilateur,
    un tableau donnnant le contexte afin d'indiquer le lieu de l'erreur au besoin

Retour

  • mixed

    Ressource SQL

    - Ressource SQL pour sql_fetch, si la requete est correcte
    - false en cas d'erreur
    - Chaine contenant la requete avec $option=false

    Retourne false en cas d'erreur, apres l'avoir denoncee. Les portages doivent retourner la requete elle-meme en cas d'erreur, afin de disposer du texte brut.

API

Package

Proposer une amélioration
boolean | string sql_selectdb( string $nom , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $nom

    Nom de la base a utiliser

  2. string $serveur = ''

    Nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true -> executer la requete
    - continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • True ou nom de la base en cas de success.
    • False en cas d'erreur.

API

Package

Proposer une amélioration

Affecte un charset (tel que utf-8) sur la connexion utilisee avec le gestionnaire de base de donnees

boolean sql_set_charset( string $charset , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $charset

    Le charset souhaite

  2. string $serveur = ''

    Le nom du connecteur

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true pour executer la requete.
    • continue pour ne pas echouer en cas de serveur sql indisponible.

Retour

  • boolean

    Retourne true si elle reussie.

API

Package

Proposer une amélioration
\ressource sql_showbase( string $spip = null , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $spip = null

    Filtre sur tables retournées

    • NULL : retourne les tables SPIP uniquement (tables préfixées avec le préfixe de la connexion)
    • '%' : retourne toutes les tables de la base
  2. string $serveur = ''

    Le nom du connecteur

  3. boolean | string $option = true

    Peut avoir 3 valeurs :

    • false -> ne pas l'executer mais la retourner,
    • continue -> ne pas echouer en cas de serveur sql indisponible,
    • true -> executer la requete.

Retour

  • \ressource

    Ressource à utiliser avec sql_fetch()

API

Voir également

Utilisé par

Package

Proposer une amélioration
boolean | array sql_showtable( string $table , boolean $table_spip = false , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. boolean $table_spip = false

    true pour remplacer automatiquement « spip » par le vrai préfixe de table

  3. string $serveur = ''

    Nom du connecteur

  4. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - 'continue' : ne pas échouer en cas de serveur SQL indisponible,
    - true : exécuter la requete.

Retour

  • boolean | array
    • false en cas d'echec
    • sinon array : Tableau avec
      • 'field' => array(colonne => description)
      • 'key' => array(type => key)
      • 'join' => array() // jointures, si déclarées.

API

Voir également

Package

Note

  • Dans la plupart des situations, il vaut mieux utiliser directement la fonction trouver_table() qui possède un cache.
Proposer une amélioration
boolean sql_terminer_transaction( string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

  2. boolean | string $option = true

    Peut avoir 3 valeurs :

    • true pour executer la requete.
    • continue pour ne pas echouer en cas de serveur sql indisponible.
    • false pour obtenir le code de la requete

Retour

  • boolean

    true si la transaction est demarree false en cas d'erreur

API

Package

Proposer une amélioration
boolean sql_test_date( string $type , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $type

    Description de la colonne SQL

  2. string $serveur = ''

    Nom du connecteur

  3. boolean $option = true

    Inutilisé

Retour

  • boolean

    True si le champ est de type entier

API

Package

Proposer une amélioration
boolean sql_test_int( string $type , string $serveur = '' , boolean $option = true )

Paramètres

  1. string $type

    Description de la colonne SQL

  2. string $serveur = ''

    Nom du connecteur

  3. boolean $option = true

    Inutilisé

Retour

  • boolean

    True si le champ est de type entier

API

Package

Proposer une amélioration

Les valeurs ne sont pas échappées, ce qui permet de modifier une colonne en utilisant la valeur d'une autre colonne ou une expression SQL.

Il faut alors protéger avec sql_quote() manuellement les valeurs qui en ont besoin.

Dans les autres cas, préférer sql_updateq().

array | boolean | string sql_update( string $table , array $exp , string | array $where = '' , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table

  2. array $exp

    Couples (colonne => valeur)

  3. string | array $where = ''

    Conditions a remplir (Where)

  4. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  5. string $serveur = ''

    Nom de la connexion

  6. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • array | boolean | string
    • string : texte de la requête si demandé
    • true si la requête a réussie, false sinon
    • array Tableau décrivant la requête et son temps d'exécution si var_profile est actif

API

Voir également

Package

Proposer une amélioration

Le contenu transmis à la fonction est protégé automatiquement comme sql_quote().

boolean | string sql_updateq( string $table , array $exp , array | string $where = '' , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. array $exp

    Couples (colonne => valeur)

  3. array | string $where = ''

    Conditions à vérifier

  4. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  5. string $serveur = ''

    Nom du connecteur

  6. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • true si réussite
    • Texte de la requête si demandé,
    • False en cas d'erreur.

API

Exemples

  • sql_updateq('table', array('colonne' => $valeur), 'id_table=' . intval($id_table));
    sql_updateq("spip_auteurs", array("statut" => '6forum'), "id_auteur=$id_auteur") ;

Voir également

Package

Note

  • sql_update() est presque toujours appelée sur des constantes ou des dates Cette fonction (sql_updateq) est donc plus utile que la précédente, d'autant qu'elle permet de gerer les différences de représentation des constantes.
Proposer une amélioration
string sql_version( string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $serveur = ''

    Nom du connecteur

  2. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true pour executer la requete.
    • continue pour ne pas echouer en cas de serveur sql indisponible.

Retour

  • string

    Numero de version du serveur SQL

API

Package

Proposer une amélioration

Internes

Retrouve la description de la table SQL en privilegiant la structure reelle de la base de donnees. En absence, ce qui arrive lors de l'installation, la fonction s'appuie sur la declaration des tables SQL principales ou auxiliaires.

array | boolean description_table( string $nom , string $serveur = '' )

Paramètres

  1. string $nom

    Nom de la table dont on souhait la description

  2. string $serveur = ''

    Nom du connecteur

Retour

  • array | boolean

    Description de la table ou false si elle n'est pas trouvee ou declaree.

Package

Internal

  • Cette fonction devrait disparaître
Proposer une amélioration

Ie: si prefixe 'dev', retournera, pour la table 'spip_articles' : 'dev_articles'.

string prefixer_table_spip( string $table , string $prefixe )

Paramètres

  1. string $table
  2. string $prefixe

Retour

  • string

    Table sql éventuellement renommée

Package

Proposer une amélioration
array | string sql_error_backtrace( boolean $compil_info = false )

Paramètres

  1. boolean $compil_info = false
    • false : Retourne un texte présentant les fonctions utilisées
    • true : retourne un tableau indiquant un contexte de compilation à l'origine de la requête, utile pour présenter une erreur au débuggueur via erreur_squelette()

Retour

  • array | string

    contexte de l'erreur

Package

Note

  • Ignore les fonctions include_once, include_spip, find_in_path
Proposer une amélioration

Indique au gestionnaire SQL de libérer de sa mémoire la ressoucre de résultat indiquée car on n'a plus besoin de l'utiliser.

boolean sql_free( \Ressource | Object $res , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. \Ressource | Object $res

    Ressource de résultat

  2. string $serveur = ''

    Nom de la connexion

  3. boolean | string $option = true

    Peut avoir 2 valeurs :

    - true -> exécuter la requete
    - continue -> ne pas échouer en cas de serveur SQL indisponible

Retour

  • boolean

    True si réussi

Package

Proposer une amélioration
boolean | string sql_insert( string $table , string $noms , string $valeurs , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. string $noms

    Liste des colonnes impactées,

  3. string $valeurs

    Liste des valeurs,

  4. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  5. string $serveur = ''

    Nom du connecteur

  6. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • int|true identifiant de l'élément inséré (si possible), ou true, si réussite
    • Texte de la requête si demandé,
    • False en cas d'erreur.

Voir également

Package

Note

  • Cette fonction ne garantit pas une portabilité totale, et n'est là que pour faciliter des migrations de vieux scripts. Préférer sql_insertq.
Proposer une amélioration

La clé ou les cles primaires doivent être présentes dans les données insérés. La fonction effectue une protection automatique des données.

Préférez sql_insertq() et sql_updateq().

boolean | string sql_replace( string $table , array $couples , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. array $couples

    Couples colonne / valeur à modifier,

  3. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • true si réussite
    • Texte de la requête si demandé,
    • False en cas d'erreur.

Voir également

Package

Proposer une amélioration

La clé ou les cles primaires doivent être présentes dans les données insérés. La fonction effectue une protection automatique des données.

Préférez sql_insertq_multi() et sql_updateq().

boolean | string sql_replace_multi( string $table , array $tab_couples , array $desc = array() , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. string $table

    Nom de la table SQL

  2. array $tab_couples

    Tableau de tableau (colonne / valeur à modifier),

  3. array $desc = array()

    Tableau de description des colonnes de la table SQL utilisée (il sera calculé si nécessaire s'il n'est pas transmis).

  4. string $serveur = ''

    Nom du connecteur

  5. boolean | string $option = true

    Peut avoir 3 valeurs :

    - false : ne pas l'exécuter mais la retourner,
    - true : exécuter la requête
    - 'continue' : ne pas échouer en cas de serveur sql indisponible

Retour

  • boolean | string
    • true si réussite
    • Texte de la requête si demandé,
    • False en cas d'erreur.

Package

Proposer une amélioration

Fonction principale. Elle charge l'interface au serveur de base de donnees via la fonction spip_connect_version qui etablira la connexion au besoin. Elle retourne la fonction produisant la requete SQL demandee Erreur fatale si la fonctionnalite est absente sauf si le 3e arg <> false

string | array sql_serveur( string $ins_sql = '' , string $serveur = '' , boolean $continue = false )

Paramètres

  1. string $ins_sql = ''

    Instruction de l'API SQL demandee (insertq, update, select...)

  2. string $serveur = ''

    Nom du connecteur ('' pour celui par defaut a l'installation de SPIP)

  3. boolean $continue = false

    true pour ne pas generer d'erreur si le serveur SQL ne dispose pas de la fonction demandee

Retour

  • string | array

    Nom de la fonction a appeler pour l'instruction demandee pour le type de serveur SQL correspondant au fichier de connexion. Si l'instruction demandee n'existe pas, retourne la liste de toutes les instructions du serveur SQL avec $continue a true.

Package

Internal

  • Cette fonction de base est appelee par les autres fonctions sql_*
Proposer une amélioration

Ne dépend pas de la disponibilité de la fonction sql_seek(). Ne fait rien pour une valeur négative ou nulle de $saut. Retourne la position après le saut

integer sql_skip( resource $res , integer $pos , integer $saut , integer $count , string $serveur = '' , boolean | string $option = true )

Paramètres

  1. resource $res

    Ressource issue d'une selection sql_select

  2. integer $pos

    position courante

  3. integer $saut

    saut demande

  4. integer $count

    position maximale (nombre de resultat de la requete OU position qu'on ne veut pas depasser)

  5. string $serveur = ''

    Nom du connecteur

  6. boolean | string $option = true

    Peut avoir 2 valeurs :

    • true -> executer la requete
    • continue -> ne pas echouer en cas de serveur sql indisponible

Retour

  • integer

    Position apres le saut.

Voir également

Package

Proposer une amélioration