Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
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 03/01/2005, 13h41   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 40
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 40
Points : 12
Points : 12
Par défaut erreur bigint requete Employee.fdb via AdoDb

Bonjour,
j'essaye de me mettre à FireBird via PHP en utilisant AdoDb.

Mais lorsque je me connecte à la base exemple de firedird j'ai l'erreur suivante:

Dynamic SQL Error SQL error code = -804 Data type unknown Client SQL dialect 1 does not support reference to BIGINT datatype
Fatal error: Call to a member function on a non-object in C:\apache\htdocs\test_adodb\getdata.php on line 30

Ce qui m'amène à me poser qq question what is le "dialect" dans firebird?
Et une autre: What is le "domain" dans firebird?

Ci dessous mon code d'interogation (from le tutoriel trouvé sur le site)
Comprends pas pourquoi ca ne marche pas.... j'ai installé IBwebadmin et l'accès à la base se passe tres bien!
Merci pour votre aide, et Bonne année 2005.


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
26
27
28
29
30
31
32
33
34
35
36
<?php
include('../adodb/adodb.inc.php');
 
 
switch ($_POST[DATABASE]){
	case 'interbase':
		$conn = &ADONewConnection('ibase');
		$conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb','SYSDBA','masterkey', "");
	break;
	case 'mysql':
		$conn = &ADONewConnection('mysql');
		$conn->PConnect('localhost','','','mybase');
	break;
	case 'access':
		$conn = &ADONewConnection('access');
		$conn->PConnect('Employee');
	# utilisation du DSN, déclaré dans le panneau de configuration
	break;
}
 
IF ( isset($_POST[DATABASE]) ) {
	$recordSet = &$conn->Execute('SELECT * FROM EMPLOYEE');
	IF ( !$recordSet )
		echo "ici = ".$conn->ErrorMsg();
	else
		while (!$recordSet->EOF) {
			echo $recordSet->FIELDS[0].' '.$recordSet->FIELDS[1].'<BR>';
			$recordSet->MoveNext();
		}
		$recordSet->Close(); // optionnel
		$conn->Close(); // optionnel
} else {
	echo 'vous devez spécifier une base de données !';
}
 
?>
[/code]
jflebegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2005, 14h38   #2
MPB
Invité de passage
 
Inscription : août 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 7
Points : 4
Points : 4
Envoyer un message via MSN à MPB
J'ai trouvé ce lien en cherchant un peu sur google car je ne connaissait pas AdoDB :
http://phplens.com/lens/adodb/docs-adodb.htm

J'ai l'impression que tu devrais plutot mettre :
Code :
1
2
 
$conn = &ADONewConnection('firebird');
pour te connecter à une base FireBird, je ne sais pas essai déjà ça
MPB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2005, 15h00   #3
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Le dialect 1 est le langage utilisé pour interbase < 6 et donc toutes les nouvelles bases de données doivent utiliser le dialect 3 pour pouvoir bénéficier des nouvelles fonctionnalitées (nouveaux type de données).

Donc pour se connecter à employee.fdb il faut spécifier qu'on se connecter en utilisant le dialect 3.

BIGINT étant un type n'existant pas dans le dialect1.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2005, 16h44   #4
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 40
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 40
Points : 12
Points : 12
Alors là je comprends plus rien j'ai fait une toute petite modif qui relève du hasard.... vous l'avez vue??

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
26
27
28
29
30
31
32
33
34
35
36
37
 
 
switch ($_POST[DATABASE]){
	case 'interbase':
 
		$conn = &ADONewConnection('ibase');
		$conn->debug=1; 
		$conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?','SYSDBA','masterkey',"");
 
	break;
	case 'mysql':
		$conn = &ADONewConnection('mysql');
		$conn->PConnect('localhost','','','mybase');
	break;
	case 'access':
		$conn = &ADONewConnection('access');
		$conn->PConnect('Employee');
	# utilisation du DSN, déclaré dans le panneau de configuration
	break;
}
 
IF ( isset($_POST[DATABASE]) ) {
	$recordSet = &$conn->Execute('SELECT * FROM EMPLOYEE');
	IF ( !$recordSet )
		echo $conn->ErrorMsg();
	else
		while (!$recordSet->EOF) {
			echo ' '.$recordSet->FIELDS[0].' '.$recordSet->FIELDS[1].'<BR>';
			//print_r( $recordSet->FetchRow());
 
			$recordSet->MoveNext();
		}
		$recordSet->Close(); // optionnel
		$conn->Close(); // optionnel
} else {
	echo 'vous devez spécifier une base de données !';
}
Non toujours pas....

il y a un ? dans
Code :
 $conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?','SYSDBA','masterkey',"");
C'est tout et ca marche!!
J'ai bien cherché à ajouter

comme dans le fichier d'aide d'adodb, mais cela n'a rien changé, et c'est par hasard que le ? est resté et cela fonctionne...

Sinon pour le domain, de quoi s'agit il sous firebird?
jflebegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2005, 17h34   #5
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Essayez ca :
[quote="jflebegue"]
Code :
 $conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?dialect=3','SYSDBA','masterkey',"");
Sinon les domaines permettent de définir des types de données spécifiques à votre base.

Par exemple si vous avez dans plusieurs tables une colonne signifiant la même chose exemple un prenom au lieu de définir vos deux colonnes avec un varchar(30)

Vous définissez un domaine s'appelant PRENOM de type VARCHAR(30) et vous utilisez ce domaine dans la définition de vos colonnes PRENOM.

Un changement du domaine en varchar(40) changera toutes les colonnes utilisant ce domaine.

Vous pouvez créer des domaines avec des contraintes (des tests). etc.

Consultez la doc pour en savoir plus vous verez c'est très utile.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2005, 10h10   #6
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 40
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 40
Points : 12
Points : 12
Bonjour,

J'ai bien essayé de mettre ceci:
mais cela donnait toujours des erreurs

en l'occurence celle ci:
Code :
1
2
Warning: ibase_pconnect(): I/O error FOR file "C:\Firebird\examples\employee.fdb?dialect=3" Error while trying TO open file Syntaxe du nom de fichier, de répertoire ou de volume incorrecte. IN C:\apache\htdocs\adodb\drivers\adodb-ibase.inc.php ON line 69
127.0.0.1:C:\Firebird\examples\employee.fdb?dialect=3: I/O error FOR file "C:\Firebird\examples\employee.fdb?dialect=3" Error while trying TO open file Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
J'ai un peu de mal à tout comprendre... et je vous assure que le ? seul fait que ca fonctionne....
Je vais me diriger vers le code PHP du fichier adodb-ibase.inc.php on line 69 pour voir ce qui s'y passe....

SI je découvre qq chose je vous tiens au courant dans ce post.
Merci,
JF
jflebegue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2005, 10h21   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Ah apparemment avec PConnect on peux pas mettre de parametres de cette façon.
Par contre il y a une autre methode de connexion :
Cf l'exemple dans le lien donné par MPB

Code :
1
2
$dsn = 'firebird://user:pwd@localhost/mydb?persist&dialect=3';  # persist is optional	
$conn = ADONewConnection($dsn);  # no need for Connect/PConnect
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2005, 11h03   #8
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 40
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 40
Points : 12
Points : 12
Merci,

Voici ce que j'ai finalement utilisé:
Code :
1
2
3
 
$dsn = 'firebird://SYSDBA:masterkey@localhost:c://firebird/examples/employee.fdb?dialect=3';  # persist is optional   
$conn = &ADONewConnection($dsn);

Le mystère du ? persiste....
jflebegue 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 14h40.


 
 
 
 
Partenaires

Hébergement Web