0

我有如下所示的 PHP 脚本:-

main.php 文件:

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

pdoMysqlPhpScript1.php 文件:

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

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);
?>

这是工作。

但是,如果我在 main.php 中包含 login.php 并从 pdoMysqlPhpScript1.php 中删除 login.php。它不起作用。

为什么会这样,我如何确保 login.php 被使用一次,这样我就不需要对来自许多不同 php 文件或存储过程的每个服务再次使用它,直到它在脚本结束时关闭?

例如:-

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'); 
?>  

请告知谢谢
克莱门特

4

1 回答 1

0

如何确保 login.php 被使用一次,以便在脚本结束时将其关闭之前,我不需要对来自许多不同 php 文件或存储过程的每个服务再次使用它?

就像你现在做的那样做 - 将它包含在你的主脚本的最顶部。
仅确保您$dbh在全局范围内寻址变量。否则(即在函数内),您必须使用global $dbh;

于 2013-02-08T03:13:16.523 回答