分页结果集写过查询预处理语句,(Paginate result set having written

2019-06-24 23:02发布

我一直在使用分页类,当我查询之前做的传统方式,但现在,我已经来干什么用准备好的语句中的查询,通过$ stmt->取()语句,我不知道现在该怎么分页。 我一直在四处寻找,并检查计算器文学,似乎有某种它现成的解决方案,一些命令或部分:排序 - >东西。

你如何分页什么出来这个循环? 会存在“准备语句的世界”中的一些命令? 任何链接,网页或网页,其中所显示?

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

Answer 1:

方法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作为一个二维数组,使用它可以使用在普通数组操作的任何分页方法。

方法2:建立与结合的输出VARS的阵列

如果你没有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);


文章来源: Paginate result set having written the query with prepared statements,
标签: php mysqli