Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PEAR > DB & MDB2
DB & MDB2 Forum d'entraide pour les bibliothèques DB et MDB2 du framework PEAR, permettant de manipuler les bases de données en PHP. Avant de poster -> tutoriels DB et MDB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/10/2007, 16h22   #1
Membre du Club
 
Inscription : février 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 72
Points : 41
Points : 41
Par défaut [MDB2] problème de quote

Bonjours,
j'essaie de lister les colonnes des chaque table de ma base.
Mais dans les réquète exécuté il semblerai que MDB2 n'entoure pas les nom de colonne par des guillemets.
Ce qui provoque des erreurs avec des table ayant des majuscules dans leur noms.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 
$mdb2 = &MDB2::connect($dsn);
if(PEAR::isError($mdb2)) {
    // Die with the user info message on failure for any reason
    die($mdb2->getuserinfo());
}
$mdb2->setOption('portability',
        MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE);
// We have a valid connection, so let's do some magic!
// Load the Reverse Module using MDB2's loadModule method
$mdb2->loadModule('Reverse', null, true);
$mdb2->loadModule('Manager');
$mdb2->setOption('portability',
        MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE);
print '<pre>';
 
print_r($mdb2->listTables());
 
foreach($mdb2->listTables() as $tableName)
{
	print_r($mdb2->tableinfo($tableName));
}
 
print '</pre>';

Code X :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => CMG_Conf
   
)
MDB2_Error Object
(
    [error_message_prefix] => 
    [mode] => 1
    [level] => 1024
    [code] => -18
    [message] => MDB2 Error: no such table
    [userinfo] => _doQuery: [Error message: Could not execute statement]
[Last executed query: SELECT * FROM CMG_Conf LIMIT 1 OFFSET 0]
[Native message: ERROR:  relation "cmg_conf" does not exist]

J'ai mis
$mdb2->setOption('portability',
MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE);
pour qu'il laisse le nom de colonne en majuscule
Quelqu'un sait si il ya une options à mettre sur MDB2 pour les quote autour des nom de colonne?
chtiboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 11h14   #2
Membre du Club
 
Inscription : février 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 72
Points : 41
Points : 41
Bon apparemment mon problème n'intéresse personne.
Au cas où j'ai trouvé la soluce.

Après une exploration dans le code MDB2.
J'ai trouvé à quel endroit il omettait les guillemets.
Il suffit en faite d'activer une autre option :
Code :
1
2
3
 
$mdb2->setOption('portability',       MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE);
$mdb2->setOption('quote_identifier', true);

Ch'Ti Boss
chtiboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h12.


 
 
 
 
Partenaires

Hébergement Web