5

Я использую следующий запрос в контроллере codeigniter.как подсчитать количество строк, возвращаемых запросом в Codeigniter, с помощью 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); 

В приведенном выше коде «$ U» является имя объекта для класса «User» для DataMapper «Пользователь», где имя таблицы в моей базе данных является «пользователи». Я хочу посмотреть, сколько строк возвращается после выполнения запроса. «$ total» всегда отображает 1, даже если идентификатор пользователя и пароль не совпадают. Я хочу, если число строк вернется 1, то «ok» else «что-то не так». Я знаю его основные, но если кто-то знает это, пожалуйста, помогите мне. Заранее спасибо.

ответ

6

Если вы просто хотите посчитать все найденные строки, вызовите метод count() вместо get().

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

Но, если вы также нужны данные, то вы можете просто позвонить get(), и после этого использование PHP count() подсчитать, сколько элементов есть внутри all свойства объекта.

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

Для получения дополнительной информации вы можете ознакомиться с документацией.

+0

отлично ... много много (бесконечное время) благодаря вам ... :) –

+0

Более безопасный способ подсчета результатов после запуска запроса - использовать $ u-> result_count(). Это подсчитывает результаты от $ this -> _ dm_dataset_iterator, если его набор, иначе использует count ($ this-> all). –

8

Ниже Доступн в CI - проверка этой страницы - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

числа строк, возвращаемых запрос. Примечание: В этом примере, $ запрос переменная, объект результата запроса присваивается:

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

echo $query->num_rows(); 

так что в вашем примере выше вам нужно попробовать

$details->num_rows(); 
+0

он не работает в codeigniter, когда мы используем Datamapper для DB Query ... Но если мы работая с активной записью codeigniter, тогда это нормально. В любом случае, это действительно потрясающе, и я благодарен, что вы потратили некоторое время, чтобы помочь мне. то, что предложил Кемаль Фадилла, отлично работает. но время очень ценно, что вы вложили, чтобы помочь мне. много спасибо вам за это :) –

+1

Нет проблем - Шаши - Я знаю, что вы четко упоминаете datamapper, но это просто не произошло со мной и опубликовано выше для activerecord. Во всяком случае бывает ... – TigerTiger

1

Если пароль был зашифрован и повторите попытку

или если все часть данных отлично Попробовать использовать следующий код

$this->db->where(array('us_email_id' => $username,'us_password' => $password1)); 
echo $this->db->count_all_results('users');