Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đếm hàng với PDO

$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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển MySQL sang PostgreSQL trên AWS RDS, Phần 3

  2. Bảng tổng hợp trong MySQL

  3. Làm thế nào để tạo dữ liệu trong MySQL?

  4. Cách kết nối với MySQL bằng Perl

  5. Cập nhật giá trị cột, thay thế một phần của chuỗi