我在函数中使用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";
}
}
先谢谢!
答案 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手册中此主题的更多信息: