0

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

最初のvarダンプは、それがPDOオブジェクトであることを示していますが、2番目はnullであることを示しています。

4

3 に答える 3

2

これは範囲内です。グローバルキーワードを読んでください。

于 2012-07-22T12:32:59.023 に答える
1

関数内のグローバル変数にアクセスする場合は、関数内でグローバル変数として定義する必要があります(ここで)(マニュアル$dbhも参照してください)。

function login_check() {
    global $dbh;
    var_dump($dbh);
}
于 2012-07-22T12:33:06.317 に答える
0
function login_check() {
    global $dbh;        
    var_dump($dbh);
}
于 2012-07-22T12:32:53.023 に答える