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= "Sup3Rp@Ssw0rD!"
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 automatiquement 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éthodeprefixTable()
dejDbConnection
. Cette méthode prend en paramètre le nom de la table à préfixer.
Profil pour MySQL ¶
Paramètres possibles :
driver
: doit valoir "mysqli" (l'API PHP mysqli est utilisée)database
: le nom de la base de données à utiliserhost
: le nom du serveur mysql sur lequel se connecteruser
etpassword
: le login/mot de passe pour la connexionpersistent
: 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.
Il est aussi possible de configurer l'accés en SSL :
ssl
: 0 ou 1. Active ou pas la connexion en SSLssl_key_pem
: chemin vers la clé privée SSLssl_cert_pem
: chemin vers le certificat SSLssl_cacert_pem
: chemin vers le certificat de l'autorité de certification
Profil pour Postgresql ¶
Paramètres possibles :
driver
: doit valoir "pgsql"database
: le nom de la base de données à utiliserhost
: 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
etpassword
: 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ètresdatabase
,host
,port
,user
etpassword
sont alors ignorés.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 timeoutsingle_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.session_role
: définir le role de session PostgreSQLforce_new
: recréer une nouvelle connexion à requête http.
Profil pour SQLite ¶
Paramètres possibles :
driver
: doit valoir "sqlite3"database
: le nom du fichier de base de données à utiliser.persistent
: indique si la connexion est persistante (on
) ou pas (off
)extensions
: liste des extensions sqlite à charger, séparé par des virgulesbusytimeout
: un entier pour le paramètre busytimeout de Sqlite
Pour le fichier de base de données, vous avez plusieurs syntaxes :
- un simple nom de fichier (ex: mybase.sqlite). Le fichier se trouvera alors dans le
dossier
var/db/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.
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 pour 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, delib/
ou du répertoirevar/
de l'applicationforce_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
etpassword
: 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 pour SQLServer ¶
Paramètres possibles :
driver
: doit valoir "sqlsrv" ("mssql" est déprécié et n'est plus maintenu)database
: le nom de la base de données à utiliserhost
: le nom du serveur sur lequel se connecter.port
: indique le port de connexion.user
etpassword
: 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 pour Oracle ¶
Paramètres possibles :
driver
: doit valoir "oci"persistent
: indique si la connexion est persistante (on
) ou pas (off
)user
etpassword
: 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 à utiliserhost
: le nom du serveur sur lequel se connecter.port
: indique le port de connexion.