Paginate结果集已使用预准备语句编写查询,

时间:2012-05-29 20:14:28

标签: php mysqli

当我以传统方式在查询之前执行时,我一直在使用分页类,但现在我已经使用预准备语句来执行查询,通过$ stmt-> fetch()语句,我不知道现在如何分页。我一直在环顾四周并检查stackoverflow文献,似乎有一些现成的解决方案,一些命令或一些:sort->东西。

你如何对这个循环中的内容进行分页? “准备好的陈述世界”中是否有一些命令?显示的任何链接,页面或网站?

while( $stmt->fetch() )
    {
        printf("%s%s%s%s", $Email, $Webpage, $Telephone, $Mobile);
    }

1 个答案:

答案 0 :(得分:2)

方法1:get_result()

*注意:此方法仅适用于PHP> = 5.3,具有mysqlnd本机驱动程序。

假设这是使用MySQLi完成的,并且您已通过bind_result()将这些变量绑定为结果变量,我将使用get_result()将其转换为MySQLi结果资源,并将这些行作为数组提取到包含所有行的数组。然后使用通常用于数组数据的任何分页方法或插件:

// Don't use bind_result()...
// execute your statement
$stmt->execute();
// Get result set into a MySQLi result resource
$result = $stmt->get_result();

// array to hold all results
$rowset = array();
// And fetch with a while loop
while ($row = $result->fetch_assoc()) {
  $rowset[] = $row;
}

var_dump($ rowset);

现在使用$rowset作为2D数组,您可以使用任何在常规数组上运行的分页方法。

方法2:构建具有绑定输出变量的数组

如果您没有mysqlnd本机驱动程序(因此无法使用get_result(),请继续使用bind_result(),但将所有这些添加到数组中:

// array to hold all rows
$rowset = array();

// All results bound to output vars
while ($stmt->fetch()) {
  // Append an array containing your result vars onto the rowset array
  $rowset[] = array(
    'email' => $Email,
    'webpage' => $Webpage,
    'telephone' => $Telephone,
    'moblile' => $Mobile
  );
}
var_dump($rowset);