PDO无法从函数中包含的文件访问

时间:2012-07-22 12:30:37

标签: php function include pdo

我有以下代码生成一个PDO对象,它位于core.php的末尾:

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

第一个var转储显示它是一个PDO对象,但第二个显示它是空的。

3 个答案:

答案 0 :(得分:2)

这是scope。阅读全球关键字。

答案 1 :(得分:1)

如果要访问函数中的全局变量,则需要将其定义为函数中的全局变量(此处为$dbh)(另请参阅the manual):

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

答案 2 :(得分:0)

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