2012-07-22 24 views
0

我有下面的代码,使一个PDO对象,这是在core.php中的末尾:PDO不从在功能包含的文件访问

try { 
    $dbh = new PDO("mysql:host=localhost;dbname=xxx", 'xxx', 'xxx'); 
} catch (PDOException $exc) { 
    header(HTTP_500_HEADER); 
    die('Database connection failure'); 
} 

在index.php的,这是在一个以上的目录它,它包括罚款,我可以访问它。我没有从函数访问$ dbh。

然而,当我尝试从访问它的函数里面像这样的(这一次是在不同的目录不同的文件):

require_once '../_/core.php'; 
var_dump($dbh); 

$show_html = true; 
$rm = $_SERVER['REQUEST_METHOD']; 

function login_check() { 
    var_dump($dbh); 
} 

第一个变种转储表明它是一个PDO对象,但第二个显示它是空的。

+0

$胸径在全球范围内。在函数内部,所有变量都是函数的局部变量(因此$ dbh是空的)。如果你想使用一个函数内全局范围内的变量,你必须首先使它们成为全局变量,如Jerzy的答案所示。 – Parziphal 2012-07-22 12:35:45

回答

0

如果你想在一个函数来访问一个全局变量你需要定义它(这里$dbh)作为函数内部全局(见the manual):

function login_check() { 
    global $dbh; 
    var_dump($dbh); 
} 
+0

有多奇怪..它的工作原理,无论如何感谢 – svbnet 2012-07-22 12:35:20

+0

不客气。 – scessor 2012-07-22 12:36:11

0
function login_check() { 
    global $dbh;   
    var_dump($dbh); 
} 
1

这是下降到scope。阅读全局关键字。