因此,我尝试限制返回的行,并且如果我使用以下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);
?>
答案 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