15

私は最近、PHP5 を使用して新しいプロジェクトの作業を開始し、その PDO クラスを使用したいと考えています。問題は、MySQL PDO ドライバーが rowCount() をサポートしていないため、クエリを実行してから、影響を受ける行または返された行の数を取得する方法がないことです。これは、私に関する限り、かなり大きな問題です。他の誰かが以前にこれに対処したことがあるかどうか、そしてあなたがそれを回避するために何をしたか疑問に思っていました. fetch() または fetchAll() を実行して、行が影響を受けているか返されているかどうかを確認する必要があるのは、私にはハックのように思えます.

4

3 に答える 3

26

SELECT FOUND_ROWS()元のクエリの直後にクエリを発行して、SELECT行数を取得できます。

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

参照: FOUND_ROWS() に関する MySQL ドキュメント

于 2009-03-18T20:47:30.130 に答える
1

MySQL ストアド プロシージャを使用している場合、このソリューションは現実的ではありません。ストアド プロシージャで 2 つの行セットを作成することをお勧めします。最初のものには、レコード数を含む 1 つの行と 1 つの列が含まれます。2 番目は、その数の行を取得するために使用するレコードセットです。

無制限の行数は、 /句なしで 2 番目の行セットSELECT COUNT(*)とまったく同じWHERE句を使用できます。 LIMITOFFSET

もう 1 つのアイデアは、一時テーブルを作成することです。ステートメントを使用してSELECT、一時テーブルにデータを入力します。SELECT COUNT(*) FROM tmpTable次に、最初の行セットと2 番目の行セットに使用できますSELECT * FROM tmpTable

于 2010-03-27T00:36:34.133 に答える