5

Tôi đang sử dụng truy vấn sau đây trong bộ điều khiển mã vạch.cách đếm số hàng được truy vấn trả về trong Codeigniter với Datamapper

$u -> where('us_email_id', $username); 
    $u -> where('us_password', $password1); 
    $details = $u -> get(); 
    $total = count($details); 
    echo $total; echo "<br>"; 
    echo count($details); 

Trong mã trên "$ u" là tên đối tượng cho lớp "Người dùng" cho người đặt dữ liệu "Người dùng" nơi tên bảng trong cơ sở dữ liệu của tôi là "người dùng". Tôi muốn xem có bao nhiêu hàng được trả về sau khi thực hiện truy vấn. "Tổng $" luôn hiển thị 1 ngay cả khi userid và mật khẩu không khớp. Những gì tôi muốn là, nếu số hàng trả về 1 thì "ok" khác "có gì sai". Tôi biết nó cơ bản nhưng nếu ai đó biết điều đó thì hãy giúp tôi. Cảm ơn trước.

Trả lời

6

Nếu bạn chỉ muốn đếm tổng số hàng được tìm thấy, hãy gọi phương thức count() thay vì get().

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$total = $u->count(); 

Nhưng, nếu bạn cũng cần các dữ liệu, sau đó bạn chỉ có thể gọi get(), và sau đó sử dụng PHP count() để đếm có bao nhiêu yếu tố này là có bên trong all tài sản của đối tượng.

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$u->get(); 
$total = count($u->all); 

Bạn có thể xem tài liệu để biết thêm chi tiết.

+0

hoàn hảo ... nhiều nhiều (vô hạn) nhờ bạn ... :) –

+0

Cách an toàn hơn để đếm kết quả sau khi truy vấn đã chạy là sử dụng $ u-> result_count(). Điều này đếm kết quả từ $ this -> _ dm_dataset_iterator nếu tập hợp của nó, sử dụng khác đếm ($ this-> all) thay thế. –

8

Sau đây là availab trong CI - kiểm trang này - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

Số hàng được trả về bởi truy vấn. Lưu ý: Trong ví dụ này, $ query là biến mà đối tượng kết quả truy vấn được gán cho:

$query = $this->db->query('SELECT * FROM my_table'); 

echo $query->num_rows(); 

để trong ví dụ của bạn ở trên, bạn cần phải thử

$details->num_rows(); 
+0

nó không hoạt động trong codeigniter khi chúng ta sử dụng Datamapper cho DB Query ... Nhưng nếu chúng ta làm việc với hồ sơ hoạt động của codeigniter sau đó điều này là tốt. Dù sao nó thực sự tuyệt vời và tôi biết ơn rằng bạn đã dành thời gian để giúp tôi. những gì Kemal Fadillah đã đề xuất là làm việc hoàn hảo. nhưng thời gian là rất quý giá mà bạn đã đầu tư để giúp tôi. Rất nhiều người cảm ơn bạn vì điều đó :) –

+1

Không vấn đề gì - Shashi - Tôi biết bạn đề cập rõ ràng về bộ dữ liệu nhưng nó không xảy ra với tôi và đăng trên cho activerecord. Dù sao cũng xảy ra ... – TigerTiger

1

Nếu mật khẩu được mã hóa và thử lại

hoặc nếu tất cả các phần dữ liệu là tốt thử sử dụng đoạn mã sau

$this->db->where(array('us_email_id' => $username,'us_password' => $password1)); 
echo $this->db->count_all_results('users'); 
Các vấn đề liên quan