所需文件内的文件不起作用


require file inside required file not working

我在 3 个 PHP 文件中有一些require"链"。 index.php需要db_get.php,这就需要db_cred.php。它们都位于同一目录中。这些是代码:

索引.php

<?php
require 'db_get.php';
$db = getDatabase();
var_dump($db);
?>

db_get.php

<?php
require 'db_cred.php';
function getDatabase()
{
    $host = 'localhost';
    $database = $db_name;
    $username = $db_user;
    $password = $db_pass;
    $connectionString = 'mysql:host=' . $host . '; dbname=' . $database . '';
    $attributes = array(
        'PDO::ATTR_ERRMODE => 'PDO::ERRMODE_EXCEPTION, 
        'PDO::ATTR_PERSISTENT => false, 
        'PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8mb4'
    );
    return new 'PDO( $connectionString, $username, $password, $attributes);
}
?>

db_cred.php(此文件由另一个 PHP 文件自动生成(

<?php $db_name="testdb"; $db_user="qNOSdZ"; $db_pass="cAHk8A"; ?>

我从索引中得到的错误.php

Notice: Undefined variable: db_name in C:'xampp'htdocs'sipil'me'db'db_get.php on line 7
Notice: Undefined variable: db_user in C:'xampp'htdocs'sipil'me'db'db_get.php on line 8
Notice: Undefined variable: db_pass in C:'xampp'htdocs'sipil'me'db'db_get.php on line 9

为什么我会收到这些错误?所有这些文件都位于同一目录中。我可能是哑巴,这个问题已经花了我一段时间了,请帮忙。

function getDatabase()
{
    global $db_name;
    global $db_user;
    global $db_pass;
    $host = 'localhost';
    $database = $db_name;
    $username = $db_user;
    $password = $db_pass;
    $connectionString = 'mysql:host=' . $host . '; dbname=' . $database . '';
    $attributes = array(
        'PDO::ATTR_ERRMODE => 'PDO::ERRMODE_EXCEPTION, 
        'PDO::ATTR_PERSISTENT => false, 
        'PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8mb4'
    );
    return new 'PDO( $connectionString, $username, $password, $attributes);
}

如上述评论所述,解决方案应该是:

<?php
require 'db_cred.php';
function getDatabase()
{
    global $db_name, $db_user, $db_pass;
    $host = 'localhost';
    $database = $db_name;
    $username = $db_user;
    $password = $db_pass;
    $connectionString = 'mysql:host=' . $host . '; dbname=' . $database . '';
    $attributes = array(
        'PDO::ATTR_ERRMODE => 'PDO::ERRMODE_EXCEPTION, 
        'PDO::ATTR_PERSISTENT => false, 
        'PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8mb4'
    );
    return new 'PDO( $connectionString, $username, $password, $attributes);
}
?>