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


PDO not accessible from included file in function

我有下面的代码来创建一个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中,它位于它上面的一个目录中,它包括fine,我可以访问它。我不是从函数访问$dbh。

然而,当我试图从这样的函数内部访问它时(这次它是不同目录中的不同文件):

require_once '../_/core.php';
var_dump($dbh);
$show_html = true;
$rm = $_SERVER['REQUEST_METHOD'];
function login_check() {
    var_dump($dbh);
}

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

这取决于范围。阅读全局关键字。

如果您想访问函数中的全局变量,您需要将其(此处为$dbh)定义为函数内部的全局变量(另请参阅手册):

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