PHP:为所有人创建一次“连接到DB”脚本

时间:2013-02-08 02:44:23

标签: php pdo

我有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文件或存储过程的每个服务,直到它在脚本结束时关闭? / p>

例如: -

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

请指教 由于
克莱门特

1 个答案:

答案 0 :(得分:0)

  

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

就像你现在这样做 - 把它包含在主脚本的最顶层 只确保您在全局范围内处理$dbh变量。否则(即在函数内),您必须使用global $dbh;

来访问它