Passer le nom d'une base de données sqlite par une variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Passer le nom d'une base de données sqlite par une variable

Re: Passer le nom d'une base de données sqlite par une variable

par fredmj » 10 févr. 2011, 20:01

OK!
Le problème provient du fait (cf ce post http://www.mail-archive.com/sqlite-user ... 28190.html) que l'utilisateur du serveur http doit avoir les droits en écriture sur le répertoire contenant la base de donnée.
Il va absolument falloir que j'active les logs de php. J'imagine que ce genre d'information y serait largement visible.

Un grand merci à XtG pour ses réponses.

Fred.

Re: Passer le nom d'une base de données sqlite par une variable

par fredmj » 10 févr. 2011, 19:26

OK, il n'y a pas de problème de type.
Mais si je définie une variable
$DATABASE_BIS = '/chemin/vers/la/database.db';
$dbh = new PDO('sqlite:'.$DATABASE_BIS);
cela fonctionne.

l'erreur affichée est (désolé de ne pas avoir cherché plus tôt de ce coté là) :

Code : Tout sélectionner

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in /var/www/htdocs/TEST/envirolib/libenviro.php:32 Stack trace: #0 /var/www/htdocs/TEST/envirolib/libenviro.php(32): PDO->__construct('sqlite:/var/www...') #1 /var/www/htdocs/TEST/enviro.php(53): Env() #2 {main} thrown in /var/www/htdocs/TEST/envirolib/libenviro.php on line 32

Code : Tout sélectionner

/var/www/htdocs/TEST/envirolib/libenviro.php
est la page qui tente la connexion à la base de donnée qui elle se trouve

Code : Tout sélectionner

/var/www/htdocs/TEST/DB/enviro.db
Et un simple print "[DB = $DATABASE]"; m'affiche correctement le nom de ce fichier qui possède les bon droits.

PS : Tu auras remarqué que j'ai édité mon précédent post, rendant la variable $DIRECTORY obsolète.

Re: Passer le nom d'une base de données sqlite par une variable

par xTG » 10 févr. 2011, 19:03

Quel est le type de $DIRECTORY ? Si c'est une string il n'y a aucun problème de concaténation dans ce code.
Mais ne te manquerait-il pas les identifiants pour la connexion ?
Quelle est l'erreur PHP affichée ?

Re: Passer le nom d'une base de données sqlite par une variable

par fredmj » 10 févr. 2011, 18:55

Merci Xtg pour ta réponse mais cela ne fonctionne pas chez moi.

Cela provient-il du fait que ma variable $DATABASE est l'union d'une variable global et d'une chaîne de caractères?
global $DATABASE;
$dbh = new PDO('sqlite:'.$DATABASE);
Comment puis-je forcer le type de ma nouvelle variable $DATABASE à STRING ?

EDIT : En fait je ne sais pas d'où cela provient.
Ma variable $DIRECTORY est récupérée depuis une autre page .php via un appel à la fonction file() comme ceci* :
$CONFIGFILE = "./fichier.cfg";
$DATACONFIG = file($CONFIGFILE);
foreach ($DATACONFIG as $line) {
$data = explode ('=',$line);
  switch ($data[0]) {
       case DATABASE:
       $DATABASE=$data[1];
       break;
[...]
et le fichier.cfg comporte une ligne
DATABSE=/chemin/vers/la/database.db

* Après modifications pour simplifier le code.

Re: Passer le nom d'une base de données sqlite par une variable

par xTG » 10 févr. 2011, 18:37

$dbh = new PDO('sqlite:' . $DATABASE');

Passer le nom d'une base de données sqlite par une variable

par fredmj » 10 févr. 2011, 18:01

Bonjour à tous,

Comme je l'indique dans mon titre, mon problème consiste en ce qui suit :

Je voudrais transformer mes lignes du type :
$dbh = new PDO('sqlite:/chemin/vers/la/base_de_donnees');
par quelque chose qui me permeterait d'utiliser une variable. Dans le genre suivant :
$dbh = new PDO('sqlite:'$DATABASE');
Mes tentatives restent vaines pour le moment. Quelqu'un aurait-il une solution?

A+
Fred.