我正在使用mysqli作为一个函数,我收到一个错误,Fatal error: Call to a member function query() on a non-object in /home/u250000297/public_html/forum/system/db.php on line 46
我尝试了不同的东西,但我只是得到了不同的错误,我做错了什么,我的错误在哪里?
代码行45-51:
function fetch($query) {
$sql = $mysqli->query($query);
$result = $sql->fetch_array(MYSQLI_BOTH);
return $result;
$sql->free();
}
这是我之前的尝试和错误:Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/u250000297/public_html/forum/system/db.php on line 46 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /home/u250000297/public_html/forum/system/db.php on line 47 Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/u250000297/public_html/forum/system/db.php on line 46 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /home/u250000297/public_html/forum/system/db.php on line 47
代码,第45-51行:
function fetch($query) {
$sql = mysqli_query($mysqli, $query);
$row = mysqli_fetch_array($sql, MYSQLI_BOTH);
return $row;
mysqli_free_result($row);
}
连接:
$mysqli = mysqli_connect($this->host,$this->username,$this->password);
mysqli_select_db( $mysqli,$this->database );
if ($mysqli->connect_error) {
trigger_error('Database connection failed: ' . $mysqli->connect_error, E_USER_ERROR);
}
答案 0 :(得分:1)
您需要将$mysqli
定义为全局或将其作为参数传递。
返回后,不会执行任何语句(mysqli_free)。
全局:
function fetch($query) {
global $mysqli;
$sql = $mysqli->query($query);
$result = $sql->fetch_array(MYSQLI_BOTH);
return $result;
}
参数(甚至更好):
function fetch($myslqi, $query) {
$sql = $mysqli->query($query);
$result = $sql->fetch_array(MYSQLI_BOTH);
return $result;
}
答案 1 :(得分:0)
要调试的要点是
1)与数据库的连接是否已建立?
2)您的查询字符串是否正确?
在非对象上调用成员函数query()并且警告:mysqli_query()期望参数1为mysqli意味着$ mysqli为null或未正确初始化。要获取更多信息,请检查mysql错误日志。