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

时间:2015-03-31 17:14:54

标签: php mysql database function connect

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

我在下面解释:

这不起作用抛出boolean 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已在第8行的C:\ xampp \ htdocs \ theproject \ connect.php中定义

注意:在第9行的C:\ xampp \ htdocs \ theproject \ connect.php中已经定义了常量DB_PASSWORD

注意:常量DB_HOST已在第10行的C:\ xampp \ htdocs \ theproject \ connect.php中定义

注意:常量DB_NAME已在第11行的C:\ xampp \ htdocs \ theproject \ connect.php中定义

* /

    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'];
    }
    }

1 个答案:

答案 0 :(得分:0)

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

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