出现“不断收到关于未定义的方法mysqli_stmt::fetch_all()的错误”的原因是mysqli_stmt类中没有fetch_all()方法。fetch_all()方法是在mysqli_result类中定义的,用于从结果集中获取所有行。
要解决这个问题,可以使用mysqli_stmt::get_result()方法将mysqli_stmt对象转换为mysqli_result对象,然后使用fetch_all()方法获取所有行。
以下是一个示例代码:
$stmt = $mysqli->prepare("SELECT * FROM table");
$stmt->execute();
$result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC);
// 遍历结果
foreach ($rows as $row) {
// 打印每一行数据
echo $row['column1'] . ' ' . $row['column2'] . '
';
}
在上面的示例中,首先创建一个mysqli_stmt对象并执行查询。然后,使用get_result()方法将mysqli_stmt对象转换为mysqli_result对象。最后,使用fetch_all()方法将结果集中的所有行存储在一个数组中,并遍历打印每一行的数据。
请注意,使用fetch_all()方法需要MySQLnd驱动程序支持。如果你的PHP版本不支持MySQLnd驱动程序,也可以使用fetch_assoc()方法来逐行获取结果集中的数据。
$stmt = $mysqli->prepare("SELECT * FROM table");
$stmt->execute();
$result = $stmt->get_result();
// 逐行获取数据
while ($row = $result->fetch_assoc()) {
// 打印每一行数据
echo $row['column1'] . ' ' . $row['column2'] . '
';
}
在上面的示例中,使用fetch_assoc()方法逐行获取结果集中的数据,并打印每一行的数据。
总结来说,要解决“不断收到关于未定义的方法mysqli_stmt::fetch_all()的错误”,可以通过使用get_result()方法将mysqli_stmt对象转换为mysqli_result对象,然后使用fetch_all()方法获取所有行;或者使用fetch_assoc()方法逐行获取结果集中的数据。