功能中的PHP mysqli连接错误
问题描述:
我在功能中使用mysqli_query
时出错,错误:Warning: mysqli_query() expects parameter 1 to be mysqli, null given
。如果我var_dump($dbc)
以外的功能,我得到了预期的结果,但当我在功能内使用它,我得到NULL
返回。功能中的PHP mysqli连接错误
这里是我的连接脚本
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";
}
}
谢谢!
答
函数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手册:
$ DBC是函数的范围之外。您需要将其作为参数传递给它,或者使用'global'导入它。 [PHP的:变量范围](http://php.net/manual/en/language.variables.scope.php) –
谢谢,我忘了:P – PapaSmurf