$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Bukan cara yang paling elegan untuk melakukannya, ditambah lagi melibatkan kueri tambahan.
PDO memiliki PDOStatement::rowCount()
, yang ternyata tidak bekerja di MySql. Sungguh menyakitkan.
Dari Dokumen PDO:
Untuk sebagian besar database, PDOSstatement::rowCount() tidak mengembalikan jumlah baris yang dipengaruhi oleh pernyataan SELECT. Sebagai gantinya, gunakanPDO::query() untuk mengeluarkan pernyataan SELECTCOUNT(*) dengan predikat yang sama seperti pernyataan SELECT yang Anda maksud, lalu gunakanPDOSstatement::fetchColumn() untuk mengambil jumlah baris yang akan dikembalikan. Aplikasi Anda kemudian dapat melakukan tindakan yang benar.
EDIT:Contoh kode di atas menggunakan pernyataan yang disiapkan, yang dalam banyak kasus mungkin tidak diperlukan untuk tujuan menghitung baris, jadi:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;