web-dev-qa-db-ja.com

Datamapperを使用したCodeigniterでのクエリによって返された行数をカウントする方法

Codeigniterのコントローラーで次のクエリを使用しています。

    $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」のクラス「User」のオブジェクト名であり、データベースのテーブル名は「users」です。クエリの実行後に返される行数を確認したい。 「$ total」は、ユーザーIDとパスワードが一致していなくても、常に1を表示します。私が欲しいのは、行数が1を返した場合は「OK」、それ以外の場合は「何か問題がある」です。私はその基本を知っていますが、誰かがそれを知っているなら、私を助けてください。前もって感謝します。

5
Shashi Roy

見つかった行の総数をカウントしたいだけの場合は、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);
_

詳細については、ドキュメントを確認してください。

6
Kemal Fadillah

以下はCIのavailabです-このページをチェックアウトしてください- http://codeigniter.com/user_guide/database/results.html

$query->num_rows()

クエリによって返された行の数。注:この例では、$ queryは、クエリ結果オブジェクトが割り当てられる変数です。

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

echo $query->num_rows(); 

上記の例では、試してみる必要があります

$details->num_rows();
8
TigerTiger

パスワードが暗号化されている場合は、再試行してください

または、すべてのデータ部分に問題がない場合は、次のコードを使用してみてください

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