为什么每次在同一文件中使用自定义函数时都需要重新连接到我的数据库?

Why do I need to reconnect to my database everytime when I use a custom function in the same file?

我有一个普通的 php 文件,我的主要程序代码在它下面的几个函数之上。我只在顶部包含了一次连接文件。下面我的一些自定义函数有查询,这些函数在上面的程序中被调用。有些东西我不明白: 如果我不在函数中包含我的连接文件,函数中的查询将不起作用,如果我这样做的话。那么为什么我需要在每个函数中包含我的连接文件?

下面我解释一下:

这不起作用抛出布尔值 mysqli_fetch 和查询错误,即使我在函数外部的文件中进行了上述连接。为什么不起作用?

function queryProfileInfo($iduser){
$iduser=$_SESSION['logged_in']['iduser'];
$query ="SELECT fnlname, username, gender, email, emailconfirmed, bio, avatar, followercount, followingcount, privatepublic FROM profile Where iduser='$iduser' ";
$response=mysqli_query($dbc, $query);
    while($row =mysqli_fetch_array($response)){

                    $username= $row['username'];
}
}

/*下一个示例可以运行,但会抛出以下错误,因为我已经在上面的文件中进行了连接

注意:常量 DB_USER 已经在 C:\xampp\htdocs\theproject\connect.php 第 8

行定义

注意:常量 DB_PASSWORD 已经在 C:\xampp\htdocs\theproject\connect.php 第 9

行定义

注意:常量 DB_HOST 已经在 C:\xampp\htdocs\theproject\connect.php 第 10

行定义

注意:常量 DB_NAME 已经在 C:\xampp\htdocs\theproject\connect.php 第 11 行

中定义

*/

    function queryProfileInfo($iduser){
include('connect.php');
    $iduser=$_SESSION['logged_in']['iduser'];
    $query ="SELECT fnlname, username, gender, email, emailconfirmed, bio, avatar, followercount, followingcount, privatepublic FROM profile Where iduser='$iduser' ";
    $response=mysqli_query($dbc, $query);
        while($row =mysqli_fetch_array($response)){

                        $username= $row['username'];
    }
    }

您需要将变量 $dbc 传递给每个使用它的函数,或者通过在每个函数中写入 global $dbc; 来声明您正在使用全局变量。不推荐后一种解决方案,因为稍后您可能希望拥有多个数据库连接。

请参阅此手册页: http://php.net/manual/en/language.variables.scope.php