PHP 用户定义函数参数范围分配问题


php user-defined-function parameter scope assignment issue

在 php 代码第 1 行和第 2 行之后,我收到了通知和错误消息。

注意:未定义的变量:dbc in ...
警告:mysqli_get_host_info() 期望参数 1 是 mysqli,在 ...

connectdb();
echo mysqli_get_host_info($dbc);

你能帮我解决我的通知和警告吗?

如何为外部函数定义$dbc?我目前正在处理错误级别-1。请不要告诉不要将通知作为解决方案。不幸的是,我无法理解自定义函数变量通道问题。谢谢。

function connectdb() 
{
    $dbc = mysqli_connect (db_host, db_user, db_password, db_name);
    if (!$dbc) 
        {
            $txt = mysqli_connect_errno().mysqli_connect_error();
            db_connect_error_mail($txt);
            unset ($txt);
            die('error message.');
        } 
    else 
        {
            return $dbc;
        }
}
 

你没有在任何地方分配connectdb()方法的返回值。 你想要:

$connection = connectdb();
echo mysqli_get_host_info($connection);

为了清楚起见,我使用了与您在函数中使用的变量名称不同的变量名称,因为它们是不同的变量,因为它们在不同的作用域中定义。

假设您正在从函数返回 $dbc ,但您没有在第 1 行中分配connectdb()函数的返回值。编译器如何知道您将返回值保存在$dbc中?

$dbc = connectdb();

这将修复您的错误。