Page 1 sur 1

Connexion DB

Posté : 21 oct. 2010, 11:55
par zilliq
Bonjour,

Jusqu'à présent, j'utilisais les fonctions mysql_ pour gérer mes connexions à la db. En résumé, pour chaque script, j'initialise dans un fichier de config la connexion à la db et en fin de script je la cloture. Ensuite j'utilise cette connexion ouverture pour chaque lecture et écriture.

Vu que PDO semble devenir le nouveau standard, j'ai voulu tester cela. Donc rebelote: connexion initialisée dans un fichier de config. Seulement quand j'essaie d'utiliser l'objet instancié à l'intérieur une classe, j'ai un genre "Call to a member function query() on a non-object".

Du coup je me demande si ma méthode de travail n'est pas scabreuse depuis le début. J'ai un peu farfouillé le net mais je n'ai rien trouvé de probant. Quelle est la "best pratice" en matière de connexion db? Faut-il ouvrir la connexion à chaque fois qu'on fait appel à une db?

Merci d'éclairer ma lanterne :)

Re: Connexion DB

Posté : 21 oct. 2010, 11:58
par stealth35
montre ce que t'as fais
a la difference de mysql_* c'est que tu dois récupérer l'objet a chaque fois

Re: Connexion DB

Posté : 22 oct. 2010, 11:09
par zilliq
Ma question porte sur le concept en général, pas sur mon script en particulier. Quelles sont les bonnes pratiques au niveau de la gestion de la connexion à la db?

Re: Connexion DB

Posté : 23 oct. 2010, 20:37
par bolaf-archi
Perso j'ai créé un include contenant les paramètres de connexion à la base de deonnées. Cet include est appelé en début de chaque page PHP

Contenu de include.inc :
$mysqlser='localhost';
$mysqllog='login';
$mysqlpass='motdepasse';
$mysqlbasek='nomdelabase';
$ouverturebase=mysql_connect($mysqlser,$mysqllog,$mysqlpass);
mysql_select_db($mysqlbasek);

Puis dans la page je me connecte aux tables de la manière suivante (par exemple) :
include 'connexion.inc';

$requet="SELECT * FROM $livredor ORDER BY date DESC LIMIT $liminf,$pagez";
$resulta=@mysql_query($requet);
$test=@mysql_num_rows($resulta);
if ($test){
while($enreg=mysql_fetch_array($resulta)){
$variable=$enreg['variable'];
}
}

Re: Connexion DB

Posté : 24 oct. 2010, 00:14
par stealth35
c'est pas avec PDO ca, et évite les @ :wink:

Re: Connexion DB

Posté : 24 oct. 2010, 10:06
par bolaf-archi
Ah mince, j'ai pâs lu PDO, désolé. OK, je sors.

Re: Connexion DB

Posté : 24 oct. 2010, 10:35
par Ryle
Que ce soit en PDO ou non, le principe reste le même : tu ouvres une connexion à la bdd et tu l'utilises ensuite. L'intérêt de PDO c'est (théoriquement) de pouvoir coder sans avoir à se préoccuper des spécificités du SGBD. L'idée c'est de pouvoir faire des requêtes du genre "SELECT mon_champ FROM ma_table" sans avoir à se soucier de savoir s'il faut un , un odbc_connect mysqli_connect ou des odbc_fetch_*, mysql_fetch_*, etc. (Ca reste théorique parce que chaque sgbd a ses spécificités et syntaxes : limit ne fonctionne que sous mysql, oracle 8 ne gère pas les jointures avec des joins, ...)

L'objectif de PDO est uniquement de pouvoir envoyer une requête et récupérer le résultat sans se poser plus de question :)

A partir de là, le principe est toujours le même, tu ouvres une connexion avec une instance de pdo comme tu le faisais en récupérant le résultat de mysql_connect(). Dans les deux cas, pour pouvoir l'utiliser dans une fonction ou dans une classe il te faut soit la passer en argument, soit déclarer ta variable comme globale pour pouvoir exploiter ta variable externe à l'intérieur de ta fonction ou de ta classe.

Tu peux donc conserver tes habitudes en ouvrant ta connexion avec un fichier de configuration et en l'exploitant ensuite dans ton code :)

Re: Connexion DB

Posté : 24 oct. 2010, 21:14
par zilliq
OK merci :)