PHP mysqli函数连接错误

时间:2011-10-09 14:18:34

标签: php mysqli

我在函数中使用mysqli_query时遇到问题,错误:Warning: mysqli_query() expects parameter 1 to be mysqli, null given。如果我在函数之外的var_dump($dbc)得到了预期的结果,但是当我在函数中使用它时,我会返回NULL

这是我的连接脚本

define('DB_HOST', 'localhost');
define('DB_DBNAME', 'db');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DBNAME)or die(mysqli_error($dbc));

这是我的功能

function memInfo($var1, $var2){
    var_dump($dbc);
    $query = mysqli_query($dbc, "SELECT * FROM `members` WHERE id = '".$var1."'")or die(mysqli_error($dbc));
    $rowCount = mysqli_num_rows($query);

    if($rowCount > 0){
        $fetch = mysqli_fetch_array($query);
        return $fetch[$var2];
    }else{
        return "Invalid member";    
    }
}

先谢谢!

2 个答案:

答案 0 :(得分:0)

在函数内声明的变量有function scope。 您需要在它们前面添加全局访问全局变量。

function memInfo() {
    global $dbc;
}

或者,您可以将变量作为函数的参数传入。

答案 1 :(得分:0)

函数memInfo中的$ dbc变量被视为“函数范围”变量。如果需要使用全局实例(之前定义的$ dbc = mysqli_ blah blah ...),则需要在函数内声明为“全局范围”。像这样:

function memInfo($var1, $var2){
    global $dbc;
    var_dump($dbc);
    $query = mysqli_query($dbc, "SELECT * FROM `members` WHERE id = '".$var1."'")or die(mysqli_error($dbc));
    $rowCount = mysqli_num_rows($query);

    if($rowCount > 0){
        $fetch = mysqli_fetch_array($query);
        return $fetch[$var2];
    }else{
        return "Invalid member";    
    }
}

有关php手册中此主题的更多信息:

http://php.net/language.variables.scope.php