Section: Profils et configuration
^ jDb : accéder à une base de données SQL | Exécuter des requêtes » |
− Table des matières
Pour pouvoir accéder à une base de données, il faut d'abord indiquer les paramètres de connexion dans le fichier de profils. Voir le chapitre sur l'utilisation de ce fichier profiles.ini.php. Vous pouvez définir plusieurs connexions, que l'on nomme "profiles". Ainsi vous pouvez définir des connexions pour la base de production, la base de développement par exemple, ou encore les différentes bases sur lesquelles s'appuie votre application.
Voici un exemple de profile dans profiles.ini.php
:
[jdb:default]
driver="mysqli"
database="jelix"
host= "localhost"
user= "jelix"
password= "jelix"
persistent= on
force_encoding=true
Le type de connexion à indiquer dans les noms des sections de
profiles.ini.php
est jdb
.
Dans la section, vous voyez un certain nombre de paramètres, dont quelques-un sont utilisables pour tous les drivers :
- driver indique le driver à utiliser. Le nombre et le nom des autres paramètres diffèrent en fonction du driver utilisé.
- table_prefix : permet d'indiquer un préfixe de table. Lors de
l'utilisation d'un DAO avec un profil spécifiant ce paramètre, les
tables indiquées dans le DAO sont préfixées dynamiquement par cette
valeur. Lors de l'écriture manuelle de requêtes pour jDb, vous pouvez
préfixer vos tables en fonction du profil utilisé grâce à la méthode
prefixTable()
dejDbConnection
. Cette méthode prend en paramètre le nom de la table à préfixer.
Profil mysql et mysqli ¶
Paramètres possibles :
- driver : doit valoir "mysqli" (utilisant la nouvelle API PHP mysqli) ou "mysql" (utilisant l'antique API PHP mysql_*, non recommendé)
- database : le nom de la base de données à utiliser
- host : le nom du serveur mysql sur lequel se connecter
- user et password : le login/mot de passe pour la connexion
- persistent : indique si la connexion est persistante (on) ou pas (off)
- force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. En effet, certains serveurs sont configurés par exemple par défaut avec une connexion en iso-8859-1, même si les données stockées sont en utf-8. Mettez à true si vous voyez que vous n'arrivez pas à afficher les données correctement.
Pour mysqli, depuis Jelix 1.6.11, il est possible de configurer l'accés SSL :
- ssl : 0 ou 1. Active ou pas la connexion en SSL
- ssl_key_pem : chemin vers la clé privée SSL
- ssl_cert_pem : chemin vers le certificat SSL
- ssl_cacert_pem : chemin vers le certificat de l'autorité de certification
Profil postgresql ¶
Paramètres possibles :
- driver : doit valoir "pgsql"
- database : le nom de la base de données à utiliser
- host : le nom du serveur postgresql sur lequel se connecter. Si vous le mettez à vide, la connexion se fera via une socket unix.
- port : indique le port de connexion. N'indiquez pas ce paramètre si vous voulez utiliser le port par défaut.
- user et password : le login/mot de passe pour la connexion. Ne mettez pas ces paramètres si vous voulez utiliser le login/mot de passe par défaut (indiqués par exemple dans les variables d'environnement du système).
- service : nom du service Postgresql. Les paramètres database, host, port, user et password sont alors ignorés. (Jelix 1.6.6+)
- persistent : indique si la connexion est persistante (on) ou pas (off)
- force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.
- timeout : Nombre de secondes autorisées pour l'établissement de la connexion au serveur avant de générer un timeout
- single_transaction : Toutes les requêtes d'une même page seront envoyées au serveur au sein d'un même transaction (entre un BEGIN; et un COMMIT;) (on) ou non (off). Défaut: off
- search_path : indiquer la liste des schémas dans lequel il faut chercher les tables, si le schéma par défaut pour la connexion ne correspond pas à celui dans lequel l'application va chercher.
- pg_options: options de connexions supplémentaires comme
--application_name=foo
Profil sqlite et sqlite3 ¶
Paramètres possibles :
- driver : doit valoir "sqlite3" (ou "sqlite" pour les vieilles bases en sqlite2)
- database : le nom du fichier de base de données à utiliser. voir plus base
- persistent : indique si la connexion est persistante (on) ou pas (off)
- extensions: liste des extensions sqlite à charger, séparé par des virgules
- busytimeout: un entier pour le paramètre busytimeout de Sqlite
Pour le fichier de base de données, vous avez plusieurs syntaxe
- un simple nom de fichier (ex: mybase.sqlite). Le fichier se trouvera alors dans le
dossier
var/db/sqlite/
(pour sqlite2) ouvar/db/sqlite3/
(pour sqlite3) de votre application - Un nom de fichier (avec éventuellement un chemin de sous répertoire), avec en prefix un raccourcis "app:", "lib:", ou "var:" pour indiquer un chemin à partir de celui de l'application, de lib/ ou du répertoire var de l'application. Ex: "app:../db/mybase.sqlite".
- un chemin complet sur le disque. Ex: /opt/foo/bar.sqlite. (Jelix 1.6.4+)
Notez que le dossier et le fichier de base de données sqlite doivent avoir les droits de lecture/écriture adéquats (ceux du serveur web).
Profil pdo ¶
Il est possible de spécifier PDO pour se connecter sur une base de donnée dans
un profil mysql, postgresql, etc. Il faut alors ajouter le paramètre
usepdo=on
. Vous devez avoir alors au moins les paramètres suivants, qui sont
quasiement identiques pour les drivers jDb :
- driver: le nom du driver PDO à utiliser ("mysql", "pgsql"...)
- host, user, password (sauf pour sqlite bien entendu)
- database : le nom de la base de donnée. Pour sqlite, vous pouvez
utiliser les raccourcis "app:", "lib:", ou "var:" pour indiquer un chemin à
partir de celui de l'application, de
lib/
ou du répertoirevar/
de l'application - force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. Même explication que pour mysql, et ce paramètre n'est pour le moment valable que pour mysql et postgresql.
jDb construira le DSN correspondant.
Si vous avez besoin de spécifier un DSN avec des paramètres particuliers, il va
falloir utiliser une autre notation, sans utiliser le paramètre usepdo
:
- driver : doit valoir "pdo"
- dsn : contient les informations de connexion (type de base de données, serveur, nom de la base..). Le format doit être celui attendu par PDO (voir la doc de pdo sur php.net).
- user et password : le login/mot de passe pour la connexion. Ne mettre ces paramètres que si nécessaire.
- force_encoding
Exemple:
[jdb:bar]
driver=pdo
dsn= "mysql:host=localhost;dbname=test"
user=
password=
Profil mssql/sqlsrv ¶
Le plugin mssql est déprécié et n'est plus maintenu. Utilisez sqlsrv.
Paramètres possibles :
- driver : doit valoir "sqlsrv"
- database : le nom de la base de données à utiliser
- host : le nom du serveur sur lequel se connecter.
- port : indique le port de connexion.
- user et password : le login/mot de passe pour la connexion.
- force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.
Profil oci ¶
Paramètres possibles :
- driver : doit valoir "oci"
- persistent : indique si la connexion est persistante (on) ou pas (off)
- user et password : le login/mot de passe pour la connexion.
- force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.
Pour indiquer le serveur et la base, soit vous indiquez une chaine de connexion :
- dsn : la chaine de connexion reconnu par oracle
Soit vous indiquez les paramètres séparément :
- database : le nom de la base de données à utiliser
- host : le nom du serveur sur lequel se connecter.
- port : indique le port de connexion.