php user-defined-function参数范围分配问题

时间:2013-02-02 16:28:58

标签: php scope user-defined-functions

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

  

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

中给出null
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;
        }
}

2 个答案:

答案 0 :(得分:2)

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

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

为了清楚起见,我使用了一个不同的变量名作为你在函数中使用的变量名,因为它们是不同的变量,因为它们是在不同的范围内定义的。

答案 1 :(得分:1)

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

$dbc = connectdb();

这将解决您的错误。