当前位置: 首页 > 知识库问答 >
问题:

警告:mysqli_fetch_array()要求参数1为给定数组的mysqli_结果

宇文俊风
2023-03-14

在这种情况下,我的查询工作正常,我已经在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);

}

然后我有一个类叫用户使用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_结果

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

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

结论是,mysqli_query不是返回结果,而是返回这样的结果对象,如果它在数据库中找到具有特定id的行。

mysqli_结果对象([当前_字段]=

我如何消除这个错误?

共有2个答案

孔征
2023-03-14

用这个。。

$result_set = User::find_by_id(1);

if($result_set){

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

}
翟泰
2023-03-14

found\u by\u id方法已在此处调用mysqli::fetch\u 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...
 类似资料: