我有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');
?>
请指教
由于
克莱门特
答案 0 :(得分:0)
如何确保login.php使用一次,这样我就不需要再次使用它来处理来自许多不同php文件或存储过程的每个服务,直到它在脚本结束时关闭?
就像你现在这样做 - 把它包含在主脚本的最顶层
只确保您在全局范围内处理$dbh
变量。否则(即在函数内),您必须使用global $dbh;