Php调用成员函数query()对非对象错误

时间:2014-01-29 06:59:01

标签: php mysqli

我正在使用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);

}

2 个答案:

答案 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错误日志。