2

従来の方法でクエリを実行する前にページ分割クラスを使用していましたが、$stmt->fetch() ステートメントを介して、準備されたステートメントを使用してクエリを実行するようになったため、現在ページ分割する方法がわかりません. 私は周りを見回してスタックオーバーフローの文献をチェックしてきました.

このループから出てくるものをどのようにページ付けしますか? 「準備されたステートメントの世界」内にいくつかのコマンドはありますか? それが表示されているリンク、ページ、またはウェブはありますか?

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

1 に答える 1

2

方法 1: get_result():

*注意: この方法は、mysqlnd ネイティブ ドライバーを使用する PHP >= 5.3 でのみ機能します。

これが 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);

2D 配列として使用する$rowsetようになりました。これにより、通常の配列で動作する任意のページネーション メソッドを使用できます。

方法 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);
于 2012-05-29T20:27:03.050 に答える