1. ホーム
  2. php

[解決済み】PDOでの行数カウント

2022-04-08 18:25:33

質問

巷には矛盾する記述がたくさんあります。PHPでPDOを使用して行数を取得する最良の方法は何ですか?PDOを使う前は、単純に mysql_num_rows .

fetchAll は、大きなデータセットを扱うことがあるため、私の用途には合いません。

何かご提案がありますか?

解決方法は?

$sql = "SELECT count(*) FROM `table` WHERE foo = ?"; 
$result = $con->prepare($sql); 
$result->execute([$bar]); 
$number_of_rows = $result->fetchColumn(); 

最もエレガントな方法とは言えませんし、余分なクエリを含んでいます。

PDOは PDOStatement::rowCount() で、これはどうやら ない は MySql で動作します。なんて面倒なんだ。

PDO Doc.から。

ほとんどのデータベースで PDOStatement::rowCount()では が影響を与える行の数を返します。 SELECT ステートメントを使用します。代わりに PDO::query()でSELECT COUNT(*)ステートメントと同じ内容の の述語は、意図したSELECT ステートメントを使用し、次に PDOStatement::fetchColumn()で 行数を取得します。 が返されます。そうすれば、あなたのアプリケーションは が正しい動作をします。

EDIT: 上記のコード例では、プリペアド・ステートメントを使用していますが、これは行数をカウントする目的では不要な場合が多いと思われますので、そのようにします。

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;