【问题标题】:Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in警告:mysqli_fetch_array() 期望参数 1 是 mysqli_result,对象在
【发布时间】:2025-11-24 17:00:02
【问题描述】:

我在尝试运行此代码时遇到了一点问题。我收到此错误:

警告:mysqli_fetch_array() 期望参数 1 是 mysqli_result,对象在

我的问题出在 第 32 行上的 while 语句中:

$connection = mysqli_connect($host, $username, $password, $db_name);
$sql = 'SELECT * FROM provinsi';
while ($r = mysqli_fetch_array($connection, $sql)) { // line 32
    $id = $r['id'];
}

【问题讨论】:

  • 阅读文档。您需要先查询数据库,然后才能获取结果。

标签: php mysqli


【解决方案1】:

mysqli_fetch_array() 的第一个参数必须是查询的结果。您正在做的是传递连接(这没有意义)和查询命令本身。

在此处阅读文档: http://php.net/manual/en/mysqli-result.fetch-array.php

要解决此问题,请先执行查询,然后将结果存储到变量中,然后再获取该变量。

$sql = "select * from privinsi";
$result = mysqli_query($connection,$sql);
while($r = mysqli_fetch_array($result))
{
    // your code here
}

【讨论】:

  • 在第二条语句中,写 mysqli 而不是 mysqli 查看完整代码: $sql = "select * from privinsi"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_array($result)) {
【解决方案2】:

你写了 SQL 查询但你没有执行它。

$sql = "select * from privinsi";
$results = mysqli_query($connection, $sql);
while($r = mysqli_fetch_array($results){
   //enter your code here
}

【讨论】:

    【解决方案3】:
    $sql = "select * from privinsi";
    $result = mysqli_query($connection,$sql);
    if (!$result) {
        printf("Error: %s\n", mysqli_error($connection));
        exit();
    }else{
       while($row = mysqli_fetch_array($result)){
        // your code here
       }
    }
    

    这有助于您显示错误,以便您找出查询不工作的确切原因。这在您使用条件或尝试在表中查找特定列时很有帮助。 疲倦的眼睛会使您忽略特定列不在当前数据库中的事实以及您在编写查询时可能会随便忽略的其他因素。如果您的错误没有详细说明,您将不可避免地绕着圈子寻找不属于您的解决方案。

    【讨论】: