警告:mysqli_fetch_array()期望参数1为mysqli_result,第21行给出的对象

时间:2018-07-13 11:50:44

标签: php mysqli

因此,我尝试限制返回的行,并且如果我使用以下SELECT * FROM table LIMIT 0,10

,代码可以正常工作

但是一旦我更改为SELECT * FROM Survey LIMIT $ startrow,10我得到以下错误,警告:mysqli_fetch_array()期望参数1为mysqli_result,第21行给出的对象,我尝试查看的任何想法是什么问题,并尝试了多种方法仍然无法解决问题。

<?php

    global $startrow;
    $con = mysqli_connect("localhost","root","","test") or die ("could not connect to mysql");

    $result = mysqli_query($con, "SELECT * FROM survey LIMIT $startrow, 10");

    echo "<table border='1'>
    <tr>
    <th>Opinion</th>
    <th>Date</th>
    </tr>";

    while($row = mysqli_fetch_array($con, $result))
    {
    echo "<tr>";
    echo "<td>" . $row['Opinion'] . "</td>";
    echo "<td>" . $row['date'] . "</td>";
    echo "</tr>";
    }
    if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
      $startrow = 0;
    } else {
      $startrow = (int)$_GET['startrow'];
    }

    mysqli_close($con);

    ?>

4 个答案:

答案 0 :(得分:2)

  

mysqli_fetch_array()函数以关联数组,数字数组或两者兼有的方式获取结果行。

基本上在这里替换此循环:

$query = "SELECT Lastname,Age FROM Persons ORDER BY Lastname";
$res = $con->query($query);

while ($row = $res->fetch_assoc()) {
      //do something
}

与此:

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";
$result=mysqli_query($con,$sql);

 // Numeric array
 $row=mysqli_fetch_array($result,MYSQLI_NUM);
 printf ("%s (%s)\n",$row[0],$row[1]);

 // Associative array
 $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
 printf ("%s (%s)\n",$row["Lastname"],$row["Age"]);

 // Free result set
 mysqli_free_result($result);

 mysqli_close($con);
?>

因此,在您的情况下,您只需要获取查询的结果,并且(因为我可以看到您已指定您希望将其作为关联数组,请选择该选项),它看起来像这样:

 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 //do something
 }

答案 1 :(得分:1)

mysqli_fetch_array或mysqli_result::fetch_array(OOP)是用于mysqli结果而不是mysqli连接的函数。

您的$ result(mysqli_result对象)应该是该函数的第一个参数,并且可能唯一。

答案 2 :(得分:1)

您不应该将$con添加到mysqli_fetch_array函数中,因为它的作用是将查询结果转换为数组,因此不需要数据库连接。例如,mysqli_query需要数据库连接才能从数据库获取查询结果...因此要使用的结果函数为mysqli_fetch_array($result)

答案 3 :(得分:0)

有关该问题的更新,现在我已经感谢发布用户的问题解决了该问题。 下面是任何想参考的人的答案。还设置用于分页的变量,并设置用于在表格中移动的下一个和上一个按钮     $ limit = 8;

SDL_Renderer