Tôi sử dụng SQL_CALC_FOUND_ROWS
trong câu lệnh SELECT Mysql, để lấy số dòng mà SELECT của tôi sẽ trả về mà không có mệnh đề LIMIT.SQL_CALC_FOUND_ROWS/FOUND_ROWS() không hoạt động trong PHP
$sql = new mysqli('localhost', 'root', '');
$sql->select_db('mysql');
$s1 = $sql->query('select SQL_CALC_FOUND_ROWS * from db limit 0, 3');
$s2 = $sql->query('select FOUND_ROWS()');
if($row = $s2->fetch_row()) printf('%d/%d', $s1->num_rows, $row[0]);
Trên trạm phát WinXP của tôi, nó trả về 3/0 mỗi lần trong vài tuần. Khi tôi sử dụng một máy chủ MySQL khác từ trạm của tôi, nó cũng trả về 3/0. Trên máy tính của anothers, cùng một mã chạy tốt, và trả về đúng số (ví dụ 3/17, nếu tôi có 17 bản ghi trong bảng mysql.db). Mỗi máy tính XP có cùng phiên bản PHP/Mysql, và nó chạy tốt trong quá khứ trên máy tính của tôi Sử dụng Trình duyệt truy vấn Mysql với cùng các truy vấn SQL tôi nhận được đúng số.
Có ai có thể cho tôi ý tưởng về giải pháp, không cài đặt lại tất cả không?
Rất tiếc, yêu cầu trước của tôi không rõ ràng lắm.
Bạn có thể bao gồm mã PHP của bạn? Bạn có chắc chắn yêu cầu đếm bằng cách sử dụng tài nguyên kết nối cơ sở dữ liệu giống như tài nguyên được sử dụng cho truy vấn không? –
Câu hỏi của bạn thiếu lỗi được tạo ra và mã bạn đang sử dụng, không thích. – TravisO
@PaulDixon Cảm ơn Paul! Trong mã .net của chúng tôi, chúng tôi luôn tạo kết nối mới để ngay sau khi tôi đọc nhận xét của bạn, tôi biết đó phải là vấn đề của tôi. –