2013-02-08 4 views
0

Je travaille des scripts PHP comme indiqué ci-dessous: -PHP: faire le script "connexion DB" une fois pour toutes

fichier main.php:

<?php 
include'../scripts/pdoMysqlPhpScript1.php'; 
?> 

fichier pdoMysqlPhpScript1.php:

<?php 
    include 'login.php'; 
    $dbh-> query('use testdata1970_10'); 
    foreach($dbh->query('call getallusers();') as $row) 
?> 

fichier login.php:

<?php// PDO is used 
$dsn = 'mysql:host=localhost; Port=3306'; 
$user = 'root'; 
$pswd = ''; 
$dbh = new PDO($dsn, $user, $pswd, 
    array(PDO::ATTR_PERSISTENT, TRUE)); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
?> 

Ça marche.

Cependant, si j'inclut login.php dans main.php et supprimer login.php de pdoMysqlPhpScript1.php. Cela n'a pas fonctionné. Pourquoi est-ce et comment puis-je m'assurer que login.php est utilisé une fois pour que je n'aie plus besoin de l'utiliser pour tous les services de nombreux fichiers php ou procédures stockées jusqu'à ce qu'il soit fermé à la fin du script?

par exemple: -

fichier main.php:

<?php 

    include 'login.php'; //scripts inside:- $dbh = new PDO($dsn, $user, $pswd,....); 
    include 'fileA.php'; //scripts inside:- $dbh = query('use storedprocedure'); 
    include 'fileB.php'; //scripts inside:- $dbh -> query ('select x from xtable'); 
    include 'fileC.php'; //scripts inside:- $stmt = $dbh->prepare('select name, value from test where name=:what'); 
    include 'fileD.php'; //scripts inside:- $dbh = query('select testtable()'); 
    include 'fileE.php'; //scripts inside:- $stmt = $dbh->prepare('select name, value from test'); 
?> 

S'il vous plaît conseiller Merci
Clement

+0

Vous dites "Cela n'a pas fonctionné", mais qu'est-ce qui n'a pas fonctionné? Y a-t-il eu un message d'erreur quelconque? –

Répondre

0

comment puis-je assurer que login.php est utilisé une fois pour que Je n'aurai pas besoin de l'utiliser à nouveau pour tous les services de nombreux fichiers php différents ou des procédures stockées jusqu'à ce qu'il soit fermé à la fin du script?

Faites simplement comme si vous le faisiez maintenant - incluez-le tout en haut de votre script principal.
Assurez-vous seulement que vous vous adressez à la variable $dbh dans le périmètre mondial. Autrement (c'est-à-dire dans une fonction) vous devez le rendre accessible en utilisant global $dbh;

+0

Oh je vois .. Merci – user1739825

Questions connexes