$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Không phải là cách thanh lịch nhất để làm điều đó, ngoài ra nó còn liên quan đến một truy vấn bổ sung.
PDO có PDOStatement::rowCount()
, mà dường như không làm việc trong MySql. Thật là một nỗi đau.
Từ Tài liệu PDO:
Đối với hầu hết các cơ sở dữ liệu, PDOStatement ::rowCount () không trả về số lượng hàng bị ảnh hưởng bởi câu lệnh SELECT. Thay vào đó, hãy sử dụngPDO ::query () để đưa ra một câu lệnh SELECTCOUNT (*) với các giá trị tương tự như câu lệnh SELECT dự định của bạn, sau đó sử dụngPDOStatement ::fetchColumn () để truy xuất số hàng sẽ được trả về. Sau đó, ứng dụng của bạn có thể thực hiện đúng hành động.
CHỈNH SỬA:Ví dụ mã trên sử dụng một câu lệnh đã chuẩn bị sẵn, trong nhiều trường hợp có lẽ không cần thiết cho mục đích đếm hàng, vì vậy:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;