$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
これを行うための最も洗練された方法ではありません。さらに、追加のクエリが必要です。
PDOにはPDOStatement::rowCount()
があります 、明らかにない MySqlで動作します。なんて痛い。
PDOドキュメントから:
ほとんどのデータベースでは、PDOStatement ::rowCount()はSELECTステートメントの影響を受ける行数を返しません。代わりに、PDO ::query()を使用して目的のSELECTstatementと同じ述語でSELECTCOUNT(*)ステートメントを発行し、次にPDOStatement ::fetchColumn()を使用して返される行数を取得します。その後、アプリケーションは正しいアクションを実行できます。
編集:上記のコード例では、プリペアドステートメントを使用しています。これは、多くの場合、行をカウントするためには不要であるため、次のようになります。
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;