📌  相关文章
📜  警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,字符串在 - PHP 中给出(1)

📅  最后修改于: 2023-12-03 15:27:56.960000             🧑  作者: Mango

警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,字符串在 - PHP 中给出

介绍

在使用PHP开发时,有时候会出现警告信息:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in ...

这个警告信息通常会出现在我们在使用mysqli_fetch_array()函数时,传递的参数不正确时。本文将详细介绍这个问题的原因和解决方法。

问题原因

当我们调用mysqli_query()函数来执行一个SQL查询时,它会返回一个mysqli_result对象。这个对象代表了查询结果的集合。我们需要将这个对象传递给mysqli_fetch_array()函数以获取查询结果。

但是有时候我们可能会犯一个错误,就是将一个字符串传递给mysqli_fetch_array()函数,而不是一个mysqli_result对象。这时程序就会产生如上的警告信息。

解决方法

要解决这个问题,我们需要确保mysqli_fetch_array()函数的第一个参数是一个mysqli_result对象,而不是一个字符串。

在调用mysqli_fetch_array()函数之前,我们应该首先确保查询操作已经成功完成,并且mysqli_query()返回的是一个mysqli_result对象。我们可以使用mysqli_num_rows()函数来检查查询结果是否为空。如果查询结果不为空,那么mysqli_query()函数将返回一个mysqli_result对象,我们就可以将它传递给mysqli_fetch_array()函数。

示例代码:

// 执行一个查询
$result = mysqli_query($link, "SELECT * FROM users");

// 检查查询结果是否为空
if(mysqli_num_rows($result) > 0) {
    // 获取查询结果
    while($row = mysqli_fetch_array($result)) {
        // 处理查询结果
    }
}

在这个示例代码中,我们首先执行了一个查询操作,并将查询结果存储在$result变量中。然后,我们使用mysqli_num_rows()函数来检查查询结果是否为空。如果查询结果不为空,我们就可以在一个while循环中调用mysqli_fetch_array()函数来逐行获取查询结果。注意,在这个while循环中使用的参数是$result对象,而不是一个字符串。

总结

警告信息“mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given”表示我们在使用mysqli_fetch_array()函数时,把一个字符串传递了给了它,而不是mysqli_result对象。要解决这个问题,我们需要确保mysqli_fetch_array()函数的第一个参数是一个mysqli_result对象,而不是一个字符串。我们可以使用mysqli_num_rows()函数来检查查询结果是否为空,并在调用mysqli_fetch_array()函数之前检查mysqli_query()函数的返回值。