警告:mysqli_fetch_array()期望参数1为mysqli_result,给定数组

时间:2015-04-28 06:44:59

标签: php

在这种情况下,我的查询工作正常,我已经在mysql上测试过它们。

首先,我在MySQLDatabase类中有一个自定义查询函数

public function query($query) {
    $this->last_query = $query;
    $resultado = mysqli_query($this->connection, $query);
    $this->confirm_query($resultado);
    return $resultado;
}

private function confirm_query($result) {
    if ($result  === FALSE) {
        print_r(mysqli_fetch_assoc($result));
        $output = "Error on query".  mysqli_error($this->connection)."<br/>";
        $output .= "Last query : ".$this->last_query;
        die($output);
    }
}

public function fetch_array($result_set){

    return mysqli_fetch_array($result_set);

}

然后我有一个名为User的类,它使用MYSQL类

    public static function find_by_id($id=0){
    global $database;
    $result_set = $database -> query("SELECT * FROM users WHERE id={$id}");
    $found = $database ->fetch_array($result_set);
    return $found;
}

最后我以这种方式调用index.php中的方法

$result_set = User::find_by_id(1);
$found_user = $database ->fetch_array($result_set);

以下是一些事实: 1.-当我插入数据库中存在的id值时发生此警告

  

警告:mysqli_fetch_array()期望参数1为mysqli_result,   数组给出

2.-当我插入数据库中不存在的id值时会发生此警告。

  

警告:mysqli_fetch_array()需要参数1   mysqli_result,null给出

结论是mysqli_query没有返回结果,但是如果它在数据库中找到具有特定id的行,则返回结果对象。

  

mysqli_result对象([current_field] =&gt; 0 [field_count] =&gt; 5   [length] =&gt; [num_rows] =&gt; 1 [type] =&gt; 0)

如何摆脱此错误?

2 个答案:

答案 0 :(得分:1)

found_by_id方法已在此处调用mysqli::fetch_array

$found = $database ->fetch_array($result_set);

如果你写了:

,它返回获取的数组
$result_set = User::find_by_id(1);
$found_user = $database ->fetch_array($result_set);//fetch_array again

您将获取的数组传递回fetch_array,这不起作用

与写这个完全相同:

$result_set = $database -> query("SELECT * FROM users WHERE id=1");
$found = $database ->fetch_array($result_set);
$found_user = $database->fetch_array($found);//<-- second call...

答案 1 :(得分:0)

使用此..

$result_set = User::find_by_id(1);

if($result_set){

      $found_user = $database ->fetch_array($result_set);

}